web-dev-qa-db-ja.com

android)のテーブルレイアウトでテーブル行を削除する方法

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

シナリオは、最初にこのページを開いたときにテーブルレイアウトに行を動的に追加するときです...しかし、しばらくしてデータベースのデータが変更された場合...更新ボタンをクリックすると、の古いデータの後に新しいデータが追加されますテーブルレイアウト...必要なのは、テーブルレイアウトにすでに存在するテキストビューを更新または削除する方法のソリューションです...

ありがとう..

15
Sourabh

試してください removeView

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

私が書いたこのメソッドは、最初の行を除くすべての行を削除します。次に、ヘッダー行を削除したくない場合に便利です。

private void cleanTable(TableLayout table) {

    int childCount = table.getChildCount();

    // Remove all rows except the first one
    if (childCount > 1) {
        table.removeViews(1, childCount - 1);
    }
}
16
Fer

これは古いスレッドだと思いますが、まともな答えなしにこれに出くわしたとき、私はショックを受けました。

私はこのようにします:

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

これにより、すべての子ビュー(この場合は行とすべて)が削除されます。説明から、1行だけを削除したいのではなく、それらを削除してから、行を再度ロードしたいようです。上記のコードは、削除部分を実行します。

12
Roloc

他のソリューションでは、行に一意のIDが必要です。

一意のIDがない場合は、次を使用してください。

tl.removeView(rowIndex);

いずれの場合も、データベースクエリの内容をリストに表示するために特別に設計されているため、 SimpleCursorAdapter または CursorAdapter の使用方法を学習してみてください。 AdapterViewを使用したデータへのバインド を参照してください。

6
Matthew Willis

私はこれを使用します:

tl.removeView(tl.getChildAt(index));
2
Paul Jr.

削除するテキストビューを知っている必要があります。 TextViewは、setId()を使用して一意のIDを設定するか、setTag()を使用して一意のタグを使用することで識別できます。

次に、TextView tv =(TextView)tr1.findViewByTag(nique tag);で識別できます。

RemoveViewを使用して、ビューを削除します。

2
Manish Khot

このコードを見て、テーブルの行を削除します

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

これを使って:

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

I-は行の位置で、削除します。

0
Maratu13