Android通过迭代

时间:2015-12-10 00:15:04

标签: android android-layout

我完成了一些在布局上创建动态对象的指南。

我有一个带数据的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行。

我做错了什么?请?

2 个答案:

答案 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);  }