【问题标题】:How to clear all rows from a TableLayout?如何清除 TableLayout 中的所有行?
【发布时间】:2011-11-10 06:56:28
【问题描述】:

我知道这已经被问过,但其他回答都没有帮助我,所以我会问自己......

我正在尝试从TableLayout 中删除所有现有行,因为我希望用户能够动态更新表。其他建议建议使用 removeAllViews(),它应该删除所有子视图,但是这会从我的其他表中删除同一 LinearLayout 中的行(我有多个表的线性布局)。

有什么建议吗?

【问题讨论】:

    标签: android android-layout tableview


    【解决方案1】:

    听起来您可能会在整个 LinearLayout 上调用 removeAllViews(),而不是您想要清除的特定 TableLayout。仔细检查你是否有类似的东西:

    myLinearLayout.someTableView.removeAllViews()

    【讨论】:

    • 不,我肯定是在调用我的 TableLayout... tl = (TableLayout)dialog.findViewById(R.id.afi_waist_table); tl.removeAllViews();
    • 稍微更改了我的代码,并且能够让 removeAllViews() 正常工作。
    • 调用 removeAllViews() 实际上工作正常。我认为它正在删除我其他表格的内容,因为我使用 TableRow 作为表格标题,我认为我没有这样做。
    【解决方案2】:

    您需要在每个 TableRow 上调用 removeAllViews():

    int count = table.getChildCount();
    for (int i = 0; i < count; i++) {
        View child = table.getChildAt(i);
        if (child instanceof TableRow) ((ViewGroup) child).removeAllViews();
    }
    

    【讨论】:

    • 您的建议将删除该行的所有子视图,但不会删除该行本身。表格布局将留下空行。
    • 我知道,这就是我认为原始海报想要的。
    • 太棒了!这对我来说很好:D
    【解决方案3】:

    您可以简单地使用yourTableView.removeViews(startIndex, count) startIndex 是您要开始删除的整数值。如果您有一个标题并且不想删除它,请从位置 1 开始,否则从 0 开始。 count 是要删除的行数。

    【讨论】:

      【解决方案4】:

      如果要删除除第一行(通常用作标题)之外的所有行,可以使用:

      tableLayout.removeViews(1, Math.max(0, tableLayout.getChildCount() - 1));
      

      【讨论】:

        猜你喜欢
        • 2017-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-17
        • 1970-01-01
        • 2019-07-06
        • 2012-07-15
        • 1970-01-01
        相关资源
        最近更新 更多