在我的Android应用程序中,有没有一种方法可以通过将变量用作id的一部分来将文本设置为textview?
我正在尝试做这样的事情:
for (int i = 1; i < 6; i++){
views.setTextViewText(R.id.textView+i, "" + realtimeData.get(i).id);
}
我确实在布局xml中将textViews声明为textView1,textView2等...并且可以使用静态名称访问它们。我的问题是我不知道我的列表中有多少个对象。我不想显示超过5,但如果少于5,则将TextView值保留为空白。
答案 0 :(得分:5)
您正在寻找getIdentifier()
方法:
for (int i = 1; i < 6; i++){
views.setTextViewText(getResources().getIdentifier("textView" + i, "id", getPackageName()), "" + realtimeData.get(i).id);
}
答案 1 :(得分:2)
+1给Luksprog,不过我认为“i&lt; 6”不是正确的方法,而是使用ViewGroup.getChildCount() and ViewGroup.getChildAt(int)
,这样您就可以更好地控制文本视图的数量。
答案 2 :(得分:0)
使用getIdentifier()
让我感到悲伤,所以我最终得到了以下内容:
String idName = "companyName"; // The id name of your resource.
int resourceId = R.id.class.getField(idName).getInt(null);
答案 3 :(得分:-1)
如果您对R文件保持大腿控制以确保您的ID是连续的,您可以尝试以下方法:
for (int i = R.id.firstTextView; i <= R.id.lastTextView; i++){
views.setTextViewText(i, "" + realtimeData.get(i).id);
}
允许只将ID添加到R文件,而无需修改代码来更改硬编码的6
号码。
只是为了证明我的观点:
<TextView android:id="@+id/testStart" />
<TextView android:id="@+id/test2" />
<TextView android:id="@+id/test3" />
<TextView android:id="@+id/testEnd" />
<Button android:id="@+id/button1" />
产生
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" />
之前
<TextView android:id="@+id/testEnd" />
立即将R.java更改为:
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;