我已经浏览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 也被
弃用重新启动加载程序调用将刷新视图
指
正确加载数据
了解加载程序管理器