我有一个用XML定义的ViewGroup,里面有一个视图,在onCreate时我想要一个变量。
我不想经历使用listview +适配器的麻烦因为我知道列表不会改变,因为onCreate()
这或多或少是我想要的代码。
TextView mytextview = myViewGroup.findViewById(R.id.mytext);
for(String test : strings){
mytextview = mytextview.clone();
mytextview.setText(test);
myViewGroup.addView(mytextview);
}
但它没有用。
答案 0 :(得分:19)
也许使用inflater,并将textview放在外部布局文件中:
View v = LayoutInflater.from(this).inflate(R.layout.textview_include, null);
viewGroup.addView(v);
答案 1 :(得分:1)
如果你这样做,你很可能会为这样创建的每个视图获得完全相同的id。这意味着做((TextView)v)。setText(“some text”);将在之前从同一布局中充气的每个TextView上调用。您仍然可以这样做,但是您应该调用setId()并使用一些合理的方法来确保连续两次获得相同的id - 增量或通用时间等。
另外,我认为Android为动态创建的id保留了一定范围的id。你可以避免在这个范围内的ID;但老实说,我不知道id系统是否有效,所以我在这一点上可能是错的。
答案 2 :(得分:0)
使用Mathias Lin的代码并使用javahead76中的提示:
LinearLayout x = (LinearLayout) findViewById(R.id.container);
for (int i = 0; i < 5; i++) {
View c = LayoutInflater.from(this).inflate(R.layout.singlerow, x);
TextView t = ((TextView)findViewById(R.id.textView1));
t.setId(i+10000);
t.setText("text"+i);
}
TextView b = (TextView) findViewById(10003);
b.setText("10003");