ListView The content of the adapter has changed but ListView did not receive a notification.

10-10 04:25:59.813: E/AndroidRuntime(5300): java.lang.IllegalStateException:
The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131427405, class android.widget.ListView) with Adapter(class android.widget.HeaderViewListAdapter)]

上面这段是我在自定义swipeRefreshLayout里面做上拉加载时报错的;意思大概是adapter的源数据和listView的条目不一样

在网上查了一些资料,大部分的解决方式是更新数据adapter.notifyDataSetChanged();必须在UI线程中执行,但是我并不是这个问题。

listView.removeFooterView(loadLayout);

我的情况是这样的,我在某一情况下,执行listView.removeFooterView(loadLayout);,但是没有及时adapter.notifyDataSetChanged();,所以导致了报错

有人会问,执行listView.addFooterView(loadLayout);需要 及时adapter.notifyDataSetChanged();吗?其实不需要的,因为listView.addFooterView(loadLayout);需要在setAdapter()方法之前执行。所以在绑定适配器之前是不用通知adapter的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值