背景: 私のプログラムの一部で「データベースの編集」ビューを作成していて、再度その行を削除するときに問題が発生しています。 「データベースの編集」ビューに表示されるフィールドは、表示されるたびに異なります。データベースビューの編集はテーブルレイアウトであり、データベースの各行はテーブルレイアウトの行です。ユーザが編集ビューを終了すると、そのビューは、次回のために行を配置または消去されるはずである。TableLayout内のTableRowの子を削除しないremoveAllViews()
私の問題は、私が試しても、私は削除するtablelayoutの行を取得することはできません。ここでは、コードのrelevent作品は以下のとおりです。
:レイアウトは、彼らがこのようなレイアウトに追加されている別のクラスに渡され、
setContentView(R.layout.database_entry);
TableLayout editorLayout = (TableLayout)findViewById(R.id.DatabaseLayout);
xmlファイルにtablelayoutのハンドルを取得します。
//layout is the tablelayout from earler, passed into this function
TableRow row = new TableRow(contex);
row .setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
//stuff added to the row....
//...
//...
layout.addView(row);
私はTablelayoutを拭くしようとすると、私はこのコード
TableLayout editorLayout = (TableLayout)findViewById(R.id.DatabaseLayout);
editorLayout.removeAllViews();
を実行します私が何をしても、次にコードを編集するためにボタンを押すと、前の行と新しい行が表示されます。それらはテーブルから取り除かれません。エラーメッセージや有用なデバッグ情報は得られません。ただ機能していません。
私はしばらくの間これを苦労しました。テーブルレイアウト(xmlファイルなし)を動的に作成しようとしましたが、各行(または1つの行)をインデックスで削除しようとしました。私は階層ビューアを使ってすべてがそのテーブルレイアウトの子であることを確認しました。誰もが洞察力を持っている場合、それは非常に高く評価されるだろう。
まだ誰もこれを見ているかどうかわかりません。しかし、私がremoveAllViews()を実行したときに見つかった問題に戻ると、 'mChildrenCount'の値は0に設定されていますが、 'mChildView'にある各子ビューのポインタが残っています。removeAllViews()子供のポインタを削除するには?私はソースそのものを調べ、問題を特定できるかどうか確認します。 – Ancantus