以编程方式向表格添加列

4

我想要在程序中动态添加表格列,但是可能搜索的关键字不太对,一直找不到合适的解决方案。

这是我的代码:

 ScrollView sv = new ScrollView(this);

         TableLayout ll=new TableLayout(this);
         HorizontalScrollView hsv = new HorizontalScrollView(this);
         TableRow tbrow=new TableRow(this);
         for(int i=0;i<mConnector.idArray.size();i++) {
             tbrow=new TableRow(this);         

                 TextView tv1=new TextView(this);
                 //String s1 = Integer.toString(i);
                 try {
                String insecticide = mConnector.insecticideArray.get(i);
                String wegedoornuis = mConnector.wegedoornluisArray.get(i);
                String dosering = mConnector.doseringArray.get(i);
                String prijs = mConnector.prijsArray.get(i);
                String bestuivers = mConnector.bestuiversArray.get(i);
                String roofvijanden = mConnector.roofvijandenArray.get(i);                    

               // String result = insecticide +" | "+wegedoornuis+" | "+dosering+" | "+prijs+" | "+bestuivers+" | "+roofvijanden;
               // int id = Integer.parseInt(s3);
                 tv1.setId(i);

                 tv1.setText(id);
                 tbrow.addView(tv1);
                 }catch(java.lang.IndexOutOfBoundsException e){

                 }

             ll.addView(tbrow);
         }
         hsv.addView(ll);
         sv.addView(hsv);
         setContentView(sv);

我希望的是每个字符串(在try{之后)都有自己的列。就像String result(现在在注释中)。但我可以调整列的宽度。
希望你们知道我的意思,否则我可以添加一张图片来说明。 编辑 快速制作了一张图片:
1个回答

6

您不能直接将字符串添加到视图中,但是您可以使用text views来完成相同的事情。我将展示一个我曾经做过的例子,让您自己想一想如何为自己的用途执行此操作。

        TableRow row=new TableRow(this.getApplicationContext());
        TableLayout tlayout=new TableLayout(this.getApplicationContext());

        tlayout.setGravity(Gravity.CENTER);
        tlayout.setBackgroundResource(R.color.background);

        row=new TableRow(this);

        TextView text1=new TextView(this.getApplicationContext());
        TextView text2=new TextView(this.getApplicationContext());
        TextView text3=new TextView(this.getApplicationContext());

        text1.setText(R.string.name);
        row.addView(text1);
        text2.setText(R.string.level);
        row.addView(text2);
        text3.setText(R.string.score);
        row.addView(text3);
        tlayout.addView(row);
        for (i=0;i<10;i++)
        {
            row=new TableRow(this.getApplicationContext());
            text1=new TextView(this.getApplicationContext());
            text2=new TextView(this.getApplicationContext());
            text3=new TextView(this.getApplicationContext());


            text1.setText(high_score_name.get(i));
            row.addView(text1);
            text2.setText(""+high_score_level.get(i));
            row.addView(text2);
            text3.setText(""+high_score_score.get(i));
            row.addView(text3);
            tlayout.addView(row);
        }

基本上,high_scores_....get(i)返回一个字符串。对于您的目的来说,类似的内容应该可以胜任。
输出将看起来像这样,连续下降10行。
name1  score1  level1
name2  score2  level2

如果我看到这个,那么 row.addView 就是一列吗? - Bigflow
基本上,这将显示3列数据,每个TextView中的一列。 - PearsonArtPhoto
啊,好的,但还有最后一件事。“Google”说一列也是一行,这不是有点愚蠢吗?(这就是我理解的)。我的意思是,列和行是两个不同的东西。 - Bigflow
1
基本上,row.addView 是在该行添加一个新视图。由于只有一行,它会向该行添加一个新列。然后您完成该行,并将其添加到表中。 - PearsonArtPhoto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接