Android:使用上下文获取所有TextView

时间:2015-02-28 06:17:00

标签: android

是否可以在活动中获取所有TextView并在不知道任何ID的情况下更改其值?可能类似于UI automtor工具,它返回UI层次结构但在Java编程级别。我尝试谷歌这个但找不到任何解决方案。

修改

我想在这里实现的是,我有一个外部库/ SDK来修改所有textView值。所以我打算在每个活动的基础上初始化它,让SDK完成修改所有TextViews值的工作。

3 个答案:

答案 0 :(得分:6)

您可以使用此代码查找布局中的所有TextView,只需传递父视图,它将完成剩下的工作:

public static void findViews(View v) {
    try {
        if (v instanceof ViewGroup) {
            ViewGroup vg = (ViewGroup) v;
            for (int i = 0; i < vg.getChildCount(); i++) {
                View child = vg.getChildAt(i);
                // recursively call this method 
                findViews(child);
            }
        } else if (v instanceof TextView) {
            //do whatever you want ...
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

答案 1 :(得分:0)

如果您有活动布局,请尝试以下

ArrayList<EditText> myEditTextList = new ArrayList<EditText>();

for( int i = 0; i < activityLayout.getChildCount(); i++ ){

if( activityLayout.getChildAt( i ) instanceof EditText )
myEditTextList.add( (EditText) activityLayout.getChildAt( i ) );

}

获取他们的价值

for(int i=0;i < myEditTextList.size();i++){
   System.out.println(myEditTextList.get(i).getText().toString());
 }

希望这会对你有所帮助。

答案 2 :(得分:0)

试试这个

首先初始化父控件并使用此

    ArrayList<TextView> list = new ArrayList<TextView>();

    for( int i = 0; i < layout.getChildCount(); i++ ){

    if( layout.getChildAt( i ) instanceof TextView )
    {
    // change the values of text view here
((TextView)layout.getChildAt( i )).setText("your text here");

    }
    }