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

下面的代码更新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;

    }

});

为什么会这样?


守候你守候我
浏览 139回答 2
2回答

繁花如伊

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

临摹微笑

解决了。里面的代码if statement不运行。我以为我一直在检查Toast.makeText()并且非常确定它确实在运行,因为 toast 不会显示,直到我意识到我忘记调用.show(). 抱歉犯了一个愚蠢的错误,我已经找到了问题所在。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java