Java 带变量的Android TextView id?
在我的Android应用程序中,有没有一种方法可以通过使用变量作为id的一部分将文本设置为textview 我正在尝试这样做: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
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);