web-dev-qa-db-ja.com

TableLayoutからすべての行をクリアする方法は?

私はこれが以前にすでに尋ねられたことを知っています、しかし他の応答のどれも私を助けなかったので、私は自分自身に尋ねます...

ユーザーがテーブルを動的に更新できるようにしたいので、既存のすべての行をTableLayoutから削除しようとしています。他の提案では、すべての子ビューを削除することになっているremoveAllViews()の使用が推奨されていますが、これにより、同じLinearLayout内の他のテーブルから行が削除されます(複数のテーブルを持つ線形レイアウトがあります)。

助言がありますか?

17

クリアしたい特定のLinearLayoutではなく、全体的にTableLayoutremoveAllViews()と呼んでいるようです。次のようなものがあることを再確認してください。

myLinearLayout.someTableView.removeAllViews()

52
SK9

各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();
}
12
Romain Guy

yourTableView.removeViews(startIndex, count)startIndexは、削除を開始する場所の整数値です。ヘッダーがあり、それを削除したくない場合は、位置1から開始します。それ以外の場合は、0から開始します。count削除する行の数です。

1
zeffah