【问题标题】:how to delete table row in table layout in android如何在android中的表格布局中删除表格行
【发布时间】:2011-07-30 00:59:03
【问题描述】:
void init()
{
   intcolumnwidth1 = int_scr_wd*55;
   intcolumnwidth1 = intcolumnwidth1/100;
   for (int i = 0; i < strarr.length-1; i++)
   {
      strinarr = fun1.split(strarr[i].trim(),"^");
      tr1 = (TableRow) new TableRow(this);
      txt1=new TextView(this);
      txt1.setWidth(intcolumnwidth1);
      txt1.setText(strinarr[0]);
      tr1.addView(txt1);
      tl.addView(tr1,new TableLayout.LayoutParams(layoutParams));
   }
}

场景是这样的,当我第一次打开这个页面时,它会在表格布局中动态添加行......但是如果在一段时间后数据库中的数据发生变化......当我点击刷新按钮时,它会在表格布局中的旧数据...我需要的只是如何刷新或删除表格布局中已存在的 textview 的解决方案...

谢谢..

【问题讨论】:

    标签: android textview tablelayout


    【解决方案1】:

    我用这个:

    tl.removeView(tl.getChildAt(index));
    

    【讨论】:

    • 添加一些解释,说明此答案如何帮助 OP 解决当前问题
    【解决方案2】:

    我写的这个方法会删除除第一行之外的所有行。如果您不想删除标题行,这很有用,例如:

    private void cleanTable(TableLayout table) {
    
        int childCount = table.getChildCount();
    
        // Remove all rows except the first one
        if (childCount > 1) {
            table.removeViews(1, childCount - 1);
        }
    }
    

    【讨论】:

      【解决方案3】:

      使用这个:

      new Handler().postDelayed(new Runnable() {
            public void run() {
               TableRow row = (TableRow)table.getChildAt(i);
               table.removeView(row);
            }
       }, 100);
      

      其中 i - 是您要删除的行位置。

      【讨论】:

        【解决方案4】:

        查看此代码以删除表中的行

        private List<View> listViewRow;
        
        if (listViewRow.size() > 0) {
            for (View view : listViewRow) {
                table.removeView(view);
            }
        }
        
        for (int i = 0; i < myList.size(); i++) {
            row.addView((new TextView(context).setText("Teste")), 0);
            row.addView((new TextView(context).setText("Teste")), 1);
            row.addView((new TextView(context).setText("Teste")), 2);
        
            listViewRow.add(row);
            table.addView(row, 1);
        }
        

        【讨论】:

          【解决方案5】:

          我意识到这是一个旧线程,但当我没有一个像样的答案时遇到这个问题时我感到震惊。

          我是这样做的:

          TableLayout table = (TableLayout) findViewById(R.id.myTable);       
          table.removeAllViews();
          

          这将删除所有子视图,在本例中为行和所有内容。根据您的描述,您似乎不想只删除一行,而是想删除它们然后再次加载这些行。上面的代码将完成删除部分。

          【讨论】:

            【解决方案6】:

            其他解决方案要求您的行具有唯一 ID。

            如果他们没有唯一的 ID,那么如何使用:

            tl.removeView(rowIndex);
            

            无论如何,您都应该尝试学习如何使用SimpleCursorAdapterCursorAdapter,因为它们是专门为在列表中显示数据库查询的内容而设计的。见Binding to Data with AdapterView

            【讨论】:

              【解决方案7】:

              您需要知道要删除的文本视图。可以通过使用 setId() 设置唯一 id 或使用 setTag() 使用唯一标签来识别 TextView。

              然后可以通过TextView tv = (TextView) tr1.findViewByTag(unique tag);

              来识别

              使用 removeView 删除视图。

              【讨论】:

                【解决方案8】:

                试试removeView

                row = (TableRow)findViewById(R.id.row);
                table.removeView(row);
                

                【讨论】:

                • 我认为动态添加的行不太可能具有静态 ID。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-01-27
                • 2014-03-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多