0

我已经浏览 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,但也没有正确解释如何在这种特定情况下使用它们)。

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

4

2 回答 2

0

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

myListAdapter.changeCursor(getCursor());
于 2012-11-24T16:09:30.187 回答
0

您应该在这里使用Loader
LoaderManager 是一个更加智能和通用的实现。startManagingCursor也已弃用Restart Loader
调用 将刷新您的视图

参考
正确加载数据
了解LoaderManager

于 2012-11-24T16:51:30.610 回答