Java 克隆textview以将其附加到视图组
我有一个用XML定义的视图组,其中包含一个视图,在创建时我希望有一个这样的变量。Java 克隆textview以将其附加到视图组,java,android,views,textview,Java,Android,Views,Textview,我有一个用XML定义的视图组,其中包含一个视图,在创建时我希望有一个这样的变量。 我不想经历使用listview+适配器的麻烦,因为它显然过于复杂,因为我知道列表不会因为onCreate()而改变 这或多或少是我想要的代码 TextView mytextview = myViewGroup.findViewById(R.id.mytext); for(String test : strings){ mytextview = mytextview.clone(); mytextview.
我不想经历使用listview+适配器的麻烦,因为它显然过于复杂,因为我知道列表不会因为onCreate()而改变 这或多或少是我想要的代码
TextView mytextview = myViewGroup.findViewById(R.id.mytext);
for(String test : strings){
mytextview = mytextview.clone();
mytextview.setText(test);
myViewGroup.addView(mytextview);
}
但它不工作。可能使用充气机,并将textview放入外部布局文件中:
View v = LayoutInflater.from(this).inflate(R.layout.textview_include, null);
viewGroup.addView(v);
如果您这样做,您很可能会为以这种方式创建的每个视图获得完全相同的id。这意味着要做类似((TextView)v.setText(“一些文本”);将在以前从同一布局充气的每个TextView上调用。您仍然可以这样做,但是您应该调用setId(),并使用一些合理的方法来确保不会在一行中两次获得相同的id—增量或通用时间,等等
另外,我认为Android为动态创建的id保留了一定范围的id。您可以避免ID在此范围内;但老实说,我不知道id系统是否正常工作,所以在这一点上我可能是错的。使用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");
LinearLayout x=(LinearLayout)findViewById(R.id.container);
对于(int i=0;i<5;i++){
视图c=布局更平。从(此)开始。充气(R.layout.singlerow,x);
TextView t=((TextView)findViewById(R.id.textView1));
t、 setId(i+10000);
t、 setText(“文本”+i);
}
TextView b=(TextView)findViewById(10003);
b、 setText(“10003”);
您当前得到的结果是什么?myTextView只显示一次?我在这里添加了一个答案,看看它是否适用于您。在for
循环末尾的findViewById
的目的是什么?该函数将id0
的视图返回到4
(在您的情况下),但您没有在任何地方使用该视图。@Pimp Trizkit您是对的,我忘了删除它。这是旧代码。如果我不能使用充气机该怎么办?