从父视图获取特定类型的视图



你们知道是否有合适的方式从父视图中获取所有特定的视图类型吗?

我想从我的活动中获得所有的EditText视图,所以我想知道是否有比使用此解决方案从活动中获取所有视图,然后测试每个视图以检查它是否是EditText更好的方法?

谢谢你的帮助,

Florian

方法1:

假设您将edittext命名为edittext_0、edittext_1、。。edittext_n。你可以做:

ViewGroup vg = (ViewGroup) view;
for (int i = 0; i < n; i++) {
int id = vg.getResources().getIdentifier("edittext_"+i, "id", getPackageName());
edittext[i] = (EditText) vg.findViewById(id);
}

事实上,如果你有大量的视图,那么链接中指定的答案是可行的,但如果你想从视图/视图组中获得特定类型的视图,只需使用findViewById方法。示例:

(in Kotlin) //Similar syntax in java
val view : View = findViewById(your_layout_or_any_other_view)
val childView : EditText = view.findViewById(edittext_id)

可选读取

链接中给出的答案的优化答案:

Kotlin使用for in loop:更容易

for (childView in ll.children) {
if(childView.id == your_edittext_id) //If required
//childView is a child of ll         
}
//Here ll is id of LinearLayout defined in layout XML.

最新更新