猛禽洛的程式筆記庫

[Android] 使用陣列存放畫面元件

當UI畫面中很多[同類型][同用途]的元件要控制時,一般方式都只能建立一大排物件變數再使用,如圖:

如果要控制這些TextView的話,我們就要建立7個TextView物件。

private lateinit var tvConnect1: TextView
private lateinit var tvConnect2: TextView
private lateinit var tvConnect3: TextView
private lateinit var tvConnect4: TextView
private lateinit var tvConnect5: TextView
private lateinit var tvConnect6: TextView
private lateinit var tvConnect7: TextView

//然後綁定ID
tvConnect1 = findViewById(R.id.tvConnect1)
tvConnect2 = findViewById(R.id.tvConnect2)
tvConnect3 = findViewById(R.id.tvConnect3)
tvConnect4 = findViewById(R.id.tvConnect4)
tvConnect5 = findViewById(R.id.tvConnect5)
tvConnect6 = findViewById(R.id.tvConnect6)
tvConnect7 = findViewById(R.id.tvConnect7)

tvConnect1.text = "連線1"
tvConnect2.text = "連線2"
...

如果使用陣列來存放TextView的話,使用起來就會方便很多:

建立一個TextView陣列。

private val tvConnect = ArrayList<TextView>()

然後再建立一個存放元件ID的陣列(R.id.xxxxx),他是Int整數的形式。

並且預先將ID都存放進陣列中。

private val tvConnectIds = arrayOf(R.id.tv_test9_status_connect1, R.id.tv_test9_status_connect2
    , R.id.tv_test9_status_connect3, R.id.tv_test9_status_connect4, R.id.tv_test9_status_connect5
    , R.id.tv_test9_status_connect6, R.id.tv_test9_status_connect7)

最後再利用迴圈把TextView跟ID串聯起來。

for(i in 0..6){
  tvConnect.add(findViewById(tvConnectIds[i]))
}

然後就可以以一般陣列的方式使用了。

tvConnect[n].text = "修改第N個TextView文字"

 

當然其他種元件也可以用同樣方法來達成喔!

元件綁陣列的小技巧就到這邊了!

-END-

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *