从SQLite库中删除条目时无法自动刷新ListView

时间:2012-11-24 16:03:59

标签: android sqlite listview refresh

我几天来一直在浏览StackOverflow,寻找解决我问题的方法,但所有类似的问题都让我感到难以理解!

所以这里是:我有一个ListView,它显示我的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,但是在这个特定情况下也没有正确解释如何使用它们。)

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

2 个答案:

答案 0 :(得分:0)

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

myListAdapter.changeCursor(getCursor());

答案 1 :(得分:0)

你应该在这里使用Loader LoaderManager是一个更加智能和通用的实现。 startManagingCursor也被弃用了 Restart Loader来电将刷新您的观看次数

参见
Properly Loading Data
Understanding the LoaderManager