繁体   English   中英

如果使用DBHelper,notifyDataSetChanged()不会更新视图吗?

[英]notifyDataSetChanged() won't update view if with DBHelper?

当我删除button时,以下代码自动更新gridView

public View getView(int position, View convertView, ViewGroup parent) {
        final Item item = getItem(position);
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.custom_button, parent, false);
        }
        Button itemBtn = (Button)convertView.findViewById(R.id.itemBtn);
        itemBtn.setText(item.getName() + " (" + item.getPrice()+")");
        itemBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                     MainActivity.cart.addItem(item);
                }
        });

    itemBtn.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
                remove(item);
                notifyDataSetChanged();
            return true;
        }
    });
       itemBtn.setLongClickable(true);
        return convertView;
    }
}

但是由于我也需要更新数据库,因此这是我当前的代码。 view不会自动更新,我仍然必须更改选项卡以更新gridView并删除button

itemBtn.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View view) {
        DBHelper dbHelper = new DBHelper(mActivity);
        if (dbHelper.removeData(item.getName(), item.getType()) > 1) {
            remove(item);
            notifyDataSetChanged();
        } else {
            Toast.makeText(mActivity, "No such item to delete", Toast.LENGTH_SHORT);
        }
        dbHelper.close();
        return true;
    }
});

为什么会这样呢?

如果没有更新数据,则在类或片段中创建一个方法,长按此键再次加载适配器,然后调用此方法,而不是notifydatasetchanged

解决了。 if statement中的代码未运行。 我以为我一直在检查Toast.makeText() ,并确保它确实在运行,因为Toast不会显示,直到我意识到我忘了调用.show() 对不起,我已经找到了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM