在调用adapter.notifyDataSetChanged()之后,我无法从ListView中删除sqlite数据。

时间:2018-02-14 06:14:05

标签: android sqlite listview adapter

调用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)作为索引

1 个答案:

答案 0 :(得分:1)

您只是通过此代码删除Order对象的本地副本!

ordersDB = new OrdersDB(context);
ArrayList<Order> mOrders = ordersDB.getOrders("Draft", 0);
ordersDB.delete(id);
mOrders.remove(0);

您需要从适配器使用的全局源中删除该项,然后调用notifyDataSetChanged()方法以获得所需的结果。