Android 从ListView中删除项目并刷新它

Android 从ListView中删除项目并刷新它,android,listview,view,Android,Listview,View,我有一个简单的问题。 我想从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.Unsuppo

我有一个简单的问题。 我想从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)

这取决于您使用的适配器

如果您使用的是ArrayAdapter,只需将其删除,然后通知ListView即可。根据listView的设置方式,您可能需要做一些更激烈的事情,如中所述

ListView-ListView//不知怎的,你得到了它的把柄
ArrayList=新的ArrayList([0 6 1 2 3]);
ArrayAdapter mAdapter=新的ArrayAdapter(此,列表);
setListAdapter(mAdapter);
mAdapter.移除(2)//删除数字2
madapter.notifyDataSetChanged();

如果您使用的是其他类型的适配器,则可能需要创建一个已修订的新适配器,并如上所述将其设置为listView。

您可能正在使用arrayadapter将项目设置为listView。 如果要删除,请使用
arrayadapterObject.remove(需要删除的项目)
并调用
arrayadapterObject.notifyDAtaSetChanged()
刷新与arrayadapter相关的项

例如,您需要从列表视图中删除项0并刷新列表视图
然后只需使用
arrayadapterObject.remove(0)
,然后在此调用旁边
arrayadapterObject.notifyDAtaSetChanged()

您使用什么来保存listview适配器中的数据?将其从数据结构中删除,然后从适配器调用notifydatasetchanged()中删除,然后调用
notifydatasetchanged()
为什么使用notifydatasetchanged()。我要通过的物体是什么?我能用这个吗?移除(adapter.getItem(currentPosition))@Joseph82调用
notifyDataSetChanged
强制适配器重新查询其数据并排列列表accordingly@Pearson但我的适配器接收的输入不止一个数组字符串(两个字符串数组和两个int数组)。需要进行许多修改
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();