从 SQLite 库中删除条目时无法自动刷新列表视图



我已经浏览StackOverflow好几天了,寻找解决问题的方法,但是所有被问到的类似问题对我来说都是复杂的理解方式!

所以这里是:我有一个列表视图,它显示我的SQLite数据库中的元素。为此,它使用SimpleCursorAdapter。我的代码没有优化,但我只是一个新手。

这是我的代码:

protected boolean onLongListItemClick(final View v, final int pos, long id) 
        {
           final String str=ReservationList.getItemAtPosition(pos).toString();
           Log.i("ListView", "onLongListItemClick string=" + str);
           AlertDialog.Builder builder = new AlertDialog.Builder(FlightBook.this);
           builder.setMessage("Delete this entry from Flight Book?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
           {
               public void onClick(DialogInterface dialog, int id) 
               {
                   Log.i("ID",""+pos);
                   rdb.removeReservationWithID((int)mAdapter.getItemId(pos));
                   **//NEED SOME CODE HERE TO REFRESH LISTVIEW AUTOMATICALLY**
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() 
           {
               public void onClick(DialogInterface dialog, int id) 
               {
                   dialog.cancel();
               }
           });
           AlertDialog alert = builder.create();
           alert.show();
           return true;
        }

所需要的只是知道我应该在代码中提到的行中放入什么,以使ListView自动刷新。我在我的适配器上尝试了一个 notifyDataChanged(),但它就是不起作用(我知道我应该使用线程和非常复杂的东西,例如 ASyncTask,但也没有正确解释如何在这种特定情况下使用它们)。

感谢您的帮助,如果您真的想帮助我,请给我代码,而不是链接! :)

您需要使用新数据创建一个新游标并将其加载到适配器中,如下所示:

myListAdapter.changeCursor(getCursor());

你应该在这里使用加载器。
LoaderManager 是一个更加智能和通用的实现。startManagementCursor 也被
弃用重新启动加载程序调用将刷新视图


正确加载数据
了解加载程序管理器

最新更新