Java text查看for循环中的文本更改

Java text查看for循环中的文本更改,java,android,for-loop,textview,Java,Android,For Loop,Textview,我想在Android Studio的for loop中更改TextView的文本,类似于: 对于i=0------->textView0,设置文本“默认值” 对于i=1------>textView1,设置文本“默认值” 对于i=2------>textView2,设置文本“默认值” 有可能吗?我不知道如何根据“I”值更改循环中的textView id,有人能帮我吗 以下是我的XML: <TextView android:layout_width="match_parent"

我想在Android Studio的for loop中更改TextView的文本,类似于:

对于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" />

您还可以使用标签集合来获取标签表单

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));
}
List labels=new ArrayList();
标签。添加(“默认1”);
标签。添加(“默认值2”);
标签。添加(“默认3”);
int[]textViewId=新int[3];
textViewIds[0]=R.id.text\u view\u a;
textViewIds[1]=R.id.text\u view\b;
textViewIds[2]=R.id.text\u view\u c;
对于(int i=0;i
性能方面的好方法

    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]);
        }
int[]textViews={R.id.textView1,R.id.textView2,R.id.textView3};
字符串[]消息={“一”、“二”、“三”};
对于(int i=0;i<3;i++){
TextView tv=(TextView)findViewById(TextView[i]);
tv.setText(messages[i]);
}

好吧,如果所有文本视图都与xml中当前的文本视图处于同一层次结构级别,那么可以尝试以下解决方案:

用一个父布局,比如RelativeLayout,将整个内容包装起来。然后,对其进行循环:

int numberOfTextViews = layout.getChildCount();
for(int i = 0; i < numberOfTextViews; i++) {
    ((TextView)(afterSendingMail.getChildAt(i))).setText("Default");
} 
int numberOfTextViews=layout.getChildCount();
对于(int i=0;i
还有另一种更好的方法来读取android中的布局、可绘制和id资源id

String[]messages={“一”、“二”、“三”};
对于(int i=0;i<3;i++){
TextView tv=(TextView)findViewById(getResources().getIdentifier(“TextView”+i+1,“id”,getPackageName());
tv.setText(messages[i]);
}
它将在运行时读取
id
。可能您有
100个id
,那么就不需要将这些id保存在一个数组中

注意

并将getActivity()
getResources()
getPackageName()
一起在片段中使用。
有关详细信息,请查看和

您可以设置TextView对象数组EAH,这是完全可能的。可以循环到TextView父视图的子视图中。请显示您的xml,这样我们就可以看到这里是否存在这种情况。签出我的解决方案@Tymek T。在我的问题中添加xml,@SathishKumarJ没关系,但将来我会有更多的文本视图,所以我想自动完成此操作,搜索Sohail Zahid答案
    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]);
    }