是否可以在活动中获取所有TextView并在不知道任何ID的情况下更改其值?可能类似于UI automtor工具,它返回UI层次结构但在Java编程级别。我尝试谷歌这个但找不到任何解决方案。
修改
我想在这里实现的是,我有一个外部库/ SDK来修改所有textView值。所以我打算在每个活动的基础上初始化它,让SDK完成修改所有TextViews值的工作。
答案 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");
}
}