我想更改textViews' Android Studio中for循环内的文本,类似于:
表示i = 0 ------------> textView0设置文本"默认"
表示i = 1 ------------> textView1设置文本"默认"
表示i = 2 ------------> textView2设置文本"默认"
有可能吗?我不知道如何根据" i"更改循环中的textView id。价值,有人可以帮助我吗?
这是我的XML:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="--------------"
android:id="@+id/textView0"
android:layout_marginLeft="16dp"
android:layout_gravity="center_horizontal"
android:textSize="13dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="--------------"
android:id="@+id/textView1"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="16dp"
android:textSize="13dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="--------------"
android:id="@+id/textView2"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="16dp"
android:textSize="13dp" />
答案 0 :(得分:5)
表现明智的好方法。
int[] textViews = {R.id.textView1, R.id.textView2, R.id.textView3};
String[] messages = {"one", "two", "three"};
for (int i = 0; i < 3; i++) {
TextView tv = (TextView) findViewById(textViews[i]);
tv.setText(messages[i]);
}
答案 1 :(得分:0)
您也可以使用标签集来获取标签表单。
List<String> labels = new ArrayList<>();
labels.add("Default 1");
labels.add("Default 2");
labels.add("Default 3");
int[] textViewIds = new int[3];
textViewIds[0] = R.id.text_view_a;
textViewIds[1] = R.id.text_view_b;
textViewIds[2] = R.id.text_view_c;
for (int i = 0; i < textViewIds.length; i++) {
TextView tv = (TextView) findViewById(textViewIds[i]);
tv.setText(labels.get(i));
}
答案 2 :(得分:0)
好吧,如果您的所有文本视图与xml中的当前层次结构级别相同,则可以尝试此解决方案:
将整个事物包裹在一个父布局中,比如说一个RelativeLayout。然后,循环遍历它:
int numberOfTextViews = layout.getChildCount();
for(int i = 0; i < numberOfTextViews; i++) {
((TextView)(afterSendingMail.getChildAt(i))).setText("Default");
}
答案 3 :(得分:0)
在android中有另一种更好的方法来读取布局,drawable和id 资源ID
String[] messages = {"one", "two", "three"};
for (int i = 0; i < 3; i++) {
TextView tv = (TextView) findViewById(getResources().getIdentifier("textView" + i+1, "id", getPackageName()));
tv.setText(messages[i]);
}
它将在运行时读取id
。可能您有100 ids
,因此无需在数组中保存这些 ID 。
注意强>
在片段中使用 getActivity()与getResources()
和getPackageName()
。
有关详细信息,请查看this和this