-2

簡単な質問があります。アクティビティを再起動せずに ListView からアイテムを削除したい。これは可能ですか?

私が試した:

 adapter.remove(adapter.getItem(currentPosition)); // line 188

しかし、次のエラーが発生します。

11-22 17:59:36.520: E/AndroidRuntime(8124): FATAL EXCEPTION: main
11-22 17:59:36.520: E/AndroidRuntime(8124): java.lang.UnsupportedOperationException
11-22 17:59:36.520: E/AndroidRuntime(8124):     at java.util.AbstractList.remove(AbstractList.java:645)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java:77)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at java.util.AbstractCollection.remove(AbstractCollection.java:230)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at android.widget.ArrayAdapter.remove(ArrayAdapter.java:248)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at host.activity.ACT_MessaggiRicevuti$3.onClick(ACT_MessaggiRicevuti.java:188)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at android.view.View.performClick(View.java:3110)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at android.view.View$PerformClick.run(View.java:11934)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at android.os.Handler.handleCallback(Handler.java:587)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at android.os.Looper.loop(Looper.java:132)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at android.app.ActivityThread.main(ActivityThread.java:4123)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at java.lang.reflect.Method.invokeNative(Native Method)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at java.lang.reflect.Method.invoke(Method.java:491)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
11-22 17:59:36.520: E/AndroidRuntime(8124):     at dalvik.system.NativeStart.main(Native Method)
4

2 に答える 2

1

arrayadapter を使用して項目をリストビューに設定している可能性があります。実行している場合は、arrayadapter に関連するアイテムを更新するために使用arrayadapterObject.remove(the item you need to remove)して呼び出す arrayadapterObject.notifyDAtaSetChanged()

たとえば、リスト ビューから項目 0 を削除し、リスト ビューを更新する必要があります。arrayadapterObject.remove(0)次に、この呼び出しの横に and を使用するだけです。arrayadapterObject.notifyDAtaSetChanged()

于 2012-11-22T16:53:43.293 に答える
1

使用するアダプターによって異なります。

ArrayAdapter を使用している場合は、それを削除してから、ListView に通知します。listView の設定方法によっては、この質問で説明されているように、もう少し抜本的な操作が必要になる場合があります。

ListView listview; //Somehow you get a handle for it
ArrayList <Integer> list=new ArrayList<Integer>([0 6 1 2 3]);
ArrayAdapter <Integer> mAdapter=new ArrayAdapter<Integer>(this,list);
listview.setListAdapter(mAdapter);
mAdapter.remove(2); //Removes the number 2
madapter.notifyDataSetChanged();

他の種類のアダプターを使用している場合は、改訂された新しいアダプターを作成し、上記のように listView に設定する必要がある場合があります。

于 2012-11-22T16:47:45.900 に答える