我完成了一些在布局上创建动态对象的指南。
我有一个带数据的2D数组。阵列[X] [Y]。每个" x"是一个TableRow。每个" y"是该行内的一个Textview。
问题是,迭代只显示最后一行。
代码是:
TableLayout tbl = (TableLayout) activity.findViewById(R.id.tableLayout);
for(int i = 0; i<count; i++){
TableRow row = new TableRow(activity);
row.setId(i);
DataStore.DataStoreClass.TableRowID = i;
for(int j=1; j<columncount;j++){
TextView txt1= new TextView(context);
txt1.setText(dataArray[i][j]);
row.addView(txt1);
}
tbl.addView(row);
}
理论上,这应该创建textview,将其发送到行,然后将行发送到TableView。 好吧,但它只显示最后一行。在我的解决方案中,应该有330行。
我做错了什么?请?
答案 0 :(得分:0)
您的ColumnCount循环中似乎有错误。我不知道为什么会从1而不是0开始循环。
for(int j=1; j<columncount;j++){ // why j=1?
TextView txt1= new TextView(context);
txt1.setText(dataArray[i][j]);
row.addView(txt1);
}
我已经尝试过你的代码,它对我很有用。我建议打印Count和ColumnCount值以获取详细信息!!
还要确保将char []或String设置为txt1.setText(),就像尝试设置整数左右一样,它会崩溃。
答案 1 :(得分:0)
//我们可以动态创建和删除对象,参考以下代码:
//注意:需要在xml文件中创建视图grop。(正好在你想添加视图的地方)
//步骤1:创建一个类A.java
public class A extends Activity {
private ViewGroup container; ArrayList<ViewGroup> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.x);
container = (ViewGroup) findViewById(R.id.c);
list= new ArrayList<ViewGroup>();
//第2步:在这里,你需要根据你的要求直接创建方法或视图。
//第3步:在for循环中调用下面的方法,以便每次创建新视图并且所有视图都在我们的control.as中你的req
addDynamicViews();//we can pass the parameters
}
private void addDynamicViews() {
ViewGroup newView = (ViewGroup)
LayoutInflater.from(getApplicationContext()).inflate(R.layout.b, container,false);
chieldView_list.add(newView);
EditText test= (EditText) newView.findViewById(R.id.test);
//you can add what ever you want
container.addView(newView, 0); }