【发布时间】:2020-11-08 22:45:25
【问题描述】:
你们知道是否有适当的方式从父视图中获取所有特定视图类型,如标题所述?
我想从我的活动中获取所有 EditText 视图,所以我想知道是否有比使用此解决方案 get all views from an activity 然后测试每个视图以检查它是否是 EditText 更好的方法?
感谢您的帮助,
弗洛里安
【问题讨论】:
标签: android view android-edittext rootview
你们知道是否有适当的方式从父视图中获取所有特定视图类型,如标题所述?
我想从我的活动中获取所有 EditText 视图,所以我想知道是否有比使用此解决方案 get all views from an activity 然后测试每个视图以检查它是否是 EditText 更好的方法?
感谢您的帮助,
弗洛里安
【问题讨论】:
标签: android view android-edittext rootview
方法一:
假设您将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 循环更容易:
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.
【讨论】: