为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守候你守候我 2021-06-14 17:44:47
下面的代码更新gridView,当我删除自动button。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;    }});为什么会这样?
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

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


查看完整回答
反对 回复 2021-06-23
?
临摹微笑

TA贡献1982条经验 获得超2个赞

解决了。里面的代码if statement不运行。我以为我一直在检查Toast.makeText()并且非常确定它确实在运行,因为 toast 不会显示,直到我意识到我忘记调用.show(). 抱歉犯了一个愚蠢的错误,我已经找到了问题所在。

查看完整回答
反对 回复 2021-06-23
  • 2 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信