[英]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.