【问题标题】:Get specific type of view from parent view从父视图获取特定类型的视图
【发布时间】:2020-11-08 22:45:25
【问题描述】:

你们知道是否有适当的方式从父视图中获取所有特定视图类型,如标题所述?

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

感谢您的帮助,

弗洛里安

【问题讨论】:

    标签: android view android-edittext rootview


    【解决方案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 循环更容易:

    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.
    

    【讨论】:

    • 谢谢你,顺便说一句,我不能投票,因为我是新来的;(
    • 很高兴它有帮助。无论如何,我认为任何人都可以为有用的答案投票。
    猜你喜欢
    • 2013-07-19
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多