我在更新ListView(LV)时遇到问题,每次尝试删除项目时都会出现以下错误:The content of the adapter has changed but ListView did not receive a notification
。
但我在LV上调用notify()
这是我的代码:
public void deleteNotif(Reminder reminder)
{
NotificationDBHelper db = new NotificationDBHelper(getBaseContext());
this.mNotificationsHours.remove(reminder); // here I remove the element from the db
db.delete(reminder); // here I remove the element from the list
synchronized (this.mNotificationListLV)
{
Log.d("sync called","hi stackoverflow");
this.mNotificationListLV.notify();
}
}
当我不使用synchronized()
时,它会提示错误:object not locked by thread before notify()
;所以我不知道该怎么做。
我从LV中的一个项目中deleteNotify(Reminder reminder)
拨打OnClickEventListener()
:
public NotificationButton(Context context, AttributeSet attrs) {
super(context, attrs);
//getAttr(context, attrs);
this.mImg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
NotificationConfig nc = NotificationConfig.getInstance();
nc.deleteNotif(mReminder);
}
});
super.setImg(R.drawable.ic_delete_forever_black_24dp,0xc40003);
}
感谢。
答案 0 :(得分:2)
您正在viewDidAppearPortfolios
而不是适配器
其中notify
是一个函数来自listView
类,基本上用于Object
锁定机制,这里根本不需要
解决方案:在适配器参考上应用notifyDataSetChanged