Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带变量的Android TextView id?_Java_Android_Android Widget_Textview - Fatal编程技术网

Java 带变量的Android TextView id?

Java 带变量的Android TextView id?,java,android,android-widget,textview,Java,Android,Android Widget,Textview,在我的Android应用程序中,有没有一种方法可以通过使用变量作为id的一部分将文本设置为textview 我正在尝试这样做: for (int i = 1; i < 6; i++){ views.setTextViewText(R.id.textView+i, "" + realtimeData.get(i).id); } for(int i=1;i

在我的Android应用程序中,有没有一种方法可以通过使用变量作为id的一部分将文本设置为textview

我正在尝试这样做:

for (int i = 1; i < 6; i++){
                views.setTextViewText(R.id.textView+i, "" + realtimeData.get(i).id);
            }
for(int i=1;i<6;i++){
views.setTextViewText(R.id.textView+i,“+realtimeData.get(i.id));
}
我确实在布局xml中将TextView声明为textView1、textView2等。。。并且可以使用静态名称访问它们。我的问题是我不知道我的列表中有多少对象。我不希望显示超过5,但如果少于5,则可以将TextView值保留为空。

您正在寻找以下方法:

for(int i=1;i<6;i++){
views.setTextViewText(getResources().getIdentifier(“textView”+i,“id”,getPackageName()),“”+realtimeData.get(i).id);
}

如果您对R文件进行控制以确保您的ID是连续的,您可以尝试以下方法:

for (int i = R.id.firstTextView; i <= R.id.lastTextView; i++){
    views.setTextViewText(i, "" + realtimeData.get(i).id);
}
生成:

    public static final int button1=0x7f070004;
    public static final int menu_settings=0x7f070005;
    public static final int test2=0x7f070001;
    public static final int test3=0x7f070002;
    public static final int testEnd=0x7f070003;
    public static final int testStart=0x7f070000;
在稍后阶段添加:

 <TextView android:id="@+id/test4" />

+然而,对于卢卡申奥来说,我觉得“毫无意义的问题” 使用
getIdentifier()

String idName = "companyName";   // The id name of your resource.

int resourceId = R.id.class.getField(idName).getInt(null);

不,你不能这样做:)R.id是编译时生成的。我知道这是不可能的。我希望有人能给我指出一个替代的方向。你不能控制id。它们是由ADT在编译时生成的,你无法预测或保证它们。当你使用@+id时,它会起作用,id会连续或连续地重新编译然而,我必须说这个设计是脆弱的。
 <TextView android:id="@+id/test4" />
    <TextView android:id="@+id/testEnd" />
    public static final int button1=0x7f070005;
    public static final int menu_settings=0x7f070006;
    public static final int test2=0x7f070001;
    public static final int test3=0x7f070002;
    public static final int test4=0x7f070003;
    public static final int testEnd=0x7f070004;
    public static final int testStart=0x7f070000;
String idName = "companyName";   // The id name of your resource.

int resourceId = R.id.class.getField(idName).getInt(null);