我有一些文本视图,我添加到列表对象,我想以编程方式初始化它们。我该怎么做呢?列表是最佳对象
我的代码到目前为止。查看添加到列表中的对象。
mTextViewList = new ArrayList<TextView>();
mTextViewList.addAll(Arrays.asList(mTextViewA, mTextViewB, mTextViewC, mTextViewD ));
String TAG_ID= "id";
这就是我想要做的事情
//Single line assignment works.
mTextViewA = (TextView) findViewById(getResources().getIdentifier("textViewA",TAG_ID, getPackageName()));
mTextViewB = (TextView) findViewById(getResources().getIdentifier("textViewB",TAG_ID, getPackageName()));
当对象添加到列表并在循环中使用
时,这不起作用//Forloop doesnt work
for (int i=0; i<mTextViewList.size(); i++) {
//System.out.println(list.get(i));
mTextViewList.get(i) = (TextView) findViewById(getResources().getIdentifier("textViewName",TAG_ID, getPackageName()));
}
答案 0 :(得分:0)
以下更有意义:
mTextViewList = new ArrayList<>();
for (int i = 0; i < mTextViewList.size(); i++) {
TextView textView = (TextView) findViewById(getResources().getIdentifier("textViewName", TAG_ID, getPackageName()));
mTextViewList.add(textView);
}
答案 1 :(得分:0)
看起来您正在尝试将项目列表设置为TextView
,其名称以连续字母结尾。我们试试这个:
mTextViewList = new ArrayList<>();
int viewCount = ???; // not sure how many elements you have
for (int i = 0; i < viewCount; i++) {
String name = "textView" + (char)('A' + i);
TextView textView = (TextView) findViewById(getResources().getIdentifier(name, TAG_ID, getPackageName()));
mTextViewList.add(textView);
}