Android 刷新listview onpost执行异步任务

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

我知道这个问题已经发布了很多次,我浏览了几乎所有的问题,但是没有结果,我正在从mysql数据库中删除一个项目,但它没有刷新,下面是onclicklistener的代码和按钮:

onClick侦听器:

 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();