Android 刷新listview onpost执行异步任务
我知道这个问题已经发布了很多次,我浏览了几乎所有的问题,但是没有结果,我正在从mysql数据库中删除一个项目,但它没有刷新,下面是onclicklistener的代码和按钮: onClick侦听器:Android 刷新listview onpost执行异步任务,android,listview,android-asynctask,adapter,custom-lists,Android,Listview,Android Asynctask,Adapter,Custom Lists,我知道这个问题已经发布了很多次,我浏览了几乎所有的问题,但是没有结果,我正在从mysql数据库中删除一个项目,但它没有刷新,下面是onclicklistener的代码和按钮: onClick侦听器: holder.void_button.setOnClickListener(new OnClickListener(){ public void onClick(View v) { adapter = new CustomListViewVoidAdapter(context,R
holder.void_button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
adapter = new CustomListViewVoidAdapter(context,R.layout.mytemp, items);
item_selected= items.get(position);
new DeleteOrder().execute();
}});
vi.setTag(holder);
}
OnPostExecute from AsyncTask:
protected void onPostExecute(String unused){
adapter.remove(item_selected);
adapter.notifyDataSetChanged();
}
适配器是全局安装的,请检查问题出在哪里?
它没有返回任何错误,只是删除了该项而没有刷新
问候
Ralph您最好使用新值将适配器再次设置到
onPostExecute
中的列表视图。在这种情况下,您不需要调用notifyDataSetChanged
。另外,不要在单击时重新初始化适配器,这不是必需的。将其抛出,但是,您是否尝试过adapter.notifyDataSetInvalidated();?这将强制更新
另外,将代码放入asynctask
例如:
protected void onPostExecute() {
adapter.notifyDataSetChanged();
adapter.notifyDataSetInvalidated();
}
在postExecute中添加以下行
if(adapter != null) {
adapter = new CustomListViewVoidAdapter(context,R.layout.mytemp, items);
YourListviewObject.setAdapter(adapter);
}
是的,它在Asynctask中,我刚刚复制了onpostexecute部分,然后我将尝试notifydatasetinvalidated并返回u。。谢谢,等等。您以前在OnCreate或其他地方声明过listview,对吗?否则,UI如何知道您正在引用Listview?(只是想澄清一下,看看下面的评论)。没有onCreate。。它是一个适配器。。。我在代码的开头声明了listview。它在以下行返回一个错误:lv.setAdapter(adapter)postexecute下的代码应该是这样的吗?:adapter=new CustomListViewVoidAdapter(context,R.layout.mytemp,items);低压设置适配器(适配器);适配器。移除(所选项目);adapter.notifyDataSetChanged();适配器。移除(所选项目);adapter.notifyDataSetChanged();这两条线不是必需的。怎么了?好的。。。停止给我错误。。。但是没有刷新,因为我删除了remove(item_selected)并按u所说的NotifyDatasetChanged。。如何使其刷新?添加这些行一次适配器。删除(选中项);adapter.notifyDataSetChanged();