调用adapter.notifyDataSetChanged()后,我无法从ListView中删除sqlite数据;
我从列表视图项和sqlite表中删除了一个草稿项,我用facebook stetho。该项删除成功,但显示片段直到片段调用onCreateView
我的代码在这里:
public void confirmRemove(final Context context, final int id) {
new AlertDialog.Builder(context)
.setTitle("Confirm")
.setMessage("Do you really want to remove this draft?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
ordersDB = new OrdersDB(context);
ArrayList<Order> mOrders = ordersDB.getOrders("Draft", 0);
ordersDB.delete(id);
mOrders.remove(0);
updateFragment1ListView();
Toast.makeText(context, "Item removed", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton(android.R.string.no, null).show();
}
public static void updateFragment1ListView() {
if(adapter != null) {
adapter.notifyDataSetChanged();
}
}
public int delete(long id) {
this.open();
int ret = db.delete(DATABASE_TABLE, KEY_ID + " = ? ", new String[]{String.valueOf(id)});
this.close();
return ret;
}
从数据库中删除成功但显示片段重新加载的时间 我添加零(0)作为索引
答案 0 :(得分:1)
您只是通过此代码删除Order对象的本地副本!
ordersDB = new OrdersDB(context);
ArrayList<Order> mOrders = ordersDB.getOrders("Draft", 0);
ordersDB.delete(id);
mOrders.remove(0);
您需要从适配器使用的全局源中删除该项,然后调用notifyDataSetChanged()方法以获得所需的结果。