如何从另一个视图通知Android ListView?

时间:2017-07-11 16:33:50

标签: java android listview

我在更新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);
}

感谢。

1 个答案:

答案 0 :(得分:2)

您正在viewDidAppearPortfolios而不是适配器

上应用通知

其中notify是一个函数来自listView类,基本上用于Object锁定机制,这里根本不需要

解决方案:在适配器参考上应用notifyDataSetChanged