Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 克隆textview以将其附加到视图组_Java_Android_Views_Textview - Fatal编程技术网

Java 克隆textview以将其附加到视图组

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.

我有一个用XML定义的视图组,其中包含一个视图,在创建时我希望有一个这样的变量。
我不想经历使用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
的目的是什么?该函数将id
0
视图返回到
4
(在您的情况下),但您没有在任何地方使用该视图。@Pimp Trizkit您是对的,我忘了删除它。这是旧代码。如果我不能使用充气机该怎么办?