1

単純なテーブルがあり、動的にを追加TableRowおよび削除します。TableRow私の要件は、テーブルの最初の行を見出しのままにしておくことを示しているので、removeView(star,end);メソッドを使用する必要がありますが、bが機能していないようで、をスローしNullPointerExceptionます。また、removeAllViews()メソッドを使用しましたが、正しく機能しているため、NullPointerExceptionがスローされる理由がわかりません。どうすれば問題を解決できますか?これは私のコードです:-

       TableLayout table = (TableLayout) findViewById(R.id.myTable);
        table.removeViews(1, table.getChildCount());
        //table.removeAllViews();
        table.postInvalidate();
        bindData();

これはlogcatエラーです:-

10-22 06:16:05.204: E/AndroidRuntime(828): Uncaught handler: thread main exiting due to uncaught exception
10-22 06:16:05.214: E/AndroidRuntime(828): java.lang.NullPointerException
10-22 06:16:05.214: E/AndroidRuntime(828):  at android.view.ViewGroup.removeViewsInternal(ViewGroup.java:2116)
10-22 06:16:05.214: E/AndroidRuntime(828):  at android.view.ViewGroup.removeViews(ViewGroup.java:2064)
10-22 06:16:05.214: E/AndroidRuntime(828):  at com.techdeedapps.diamond.ViewStockActivity$BackgroungLoadingDiamondList.onPostExecute(ViewStockActivity.java:348)
10-22 06:16:05.214: E/AndroidRuntime(828):  at com.techdeedapps.diamond.ViewStockActivity$BackgroungLoadingDiamondList.onPostExecute(ViewStockActivity.java:1)
10-22 06:16:05.214: E/AndroidRuntime(828):  at android.os.AsyncTask.finish(AsyncTask.java:417)
10-22 06:16:05.214: E/AndroidRuntime(828):  at android.os.AsyncTask.access$300(AsyncTask.java:127)
10-22 06:16:05.214: E/AndroidRuntime(828):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
10-22 06:16:05.214: E/AndroidRuntime(828):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 06:16:05.214: E/AndroidRuntime(828):  at android.os.Looper.loop(Looper.java:123)
10-22 06:16:05.214: E/AndroidRuntime(828):  at android.app.ActivityThread.main(ActivityThread.java:4363)
10-22 06:16:05.214: E/AndroidRuntime(828):  at java.lang.reflect.Method.invokeNative(Native Method)
10-22 06:16:05.214: E/AndroidRuntime(828):  at java.lang.reflect.Method.invoke(Method.java:521)
10-22 06:16:05.214: E/AndroidRuntime(828):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-22 06:16:05.214: E/AndroidRuntime(828):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-22 06:16:05.214: E/AndroidRuntime(828):  at dalvik.system.NativeStart.main(Native Method)

このメソッドを使用してすべてのビューを削除すると完全に機能します。table.removeAllView()それでは、なぜこのメソッドを使用して機能しないのtable.removeViews(1,table.getChildCount()でしょうか。

4

1 に答える 1

3

最初のアイテムを除くすべてのアイテムを削除する必要があるため、「子要素の数から最後の要素を引いた数」のみを削除する必要があります。つまり

table.removeViews(1, table.getChildCount() - 1);

質問のコード行を使用して、TableLayoutに実際にあるよりも多くの子ビューを削除しようとします。

于 2012-10-22T06:14:45.417 に答える