gpt4 book ai didi

Android猴子在android.widget.HeaderViewListAdapter中导致适配器通知异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:28 25 4
gpt4 key购买 nike

我遇到了常见问题:

java.lang.IllegalStateException: The content of the adapter has changed but List
View did not receive a notification. Make sure the content of your adapter is no
t modified from a background thread, but only from the UI thread. [in ListView(2
131427573, class android.widget.ListView) with Adapter(class android.widget.Head
erViewListAdapter)]

但是适配器不是我的代码,而是在android.widget.HeaderViewListAdapter这是使用 Jellybean。

我通读了HeaderViewListAdapterListAdapterListView的源代码。当 ListView 中的项目计数不等于 ListAdapter 提供的计数时,将抛出 IllegalStateException。在这种情况下,ListAdapterHeaderViewListAdapterHeaderViewListAdapter 的计数是客户端代码传递的原始 ListAdapter 的计数,加上页眉和页脚的大小。

我追踪了我的代码。对 ListView 的所有访问都在 UI 线程上进行,并且始终紧随 notifyDataSetChanged() 到适配器。我正在使用一个页脚。

这在正常使用中不会发生。是猴子的缘故吗?但是 Monkey 如何从其他线程修改我的变量呢?

  • 更多猴子测试后更新

我通过删除对 addFooterView() 的调用来删除页脚。 Monkey 不再触发异常。我是否应该在某个时候删除对 addFooterView() 的调用?

最佳答案

您可以尝试将这样的内容添加到您的 ListView 中:

    @Override
protected void layoutChildren() {
try {
super.layoutChildren();
} catch (IllegalStateException e) {
ZLog.e(LOG, "This is not realy dangerous problem");
}
}

如果你添加了一个headerview或者一个footerview ListView,当你notifyDataSetChanged()时,它会将mItemCount改为真正的adapter的item count,但是右侧会返回添加了headercount和footercount的fake itemcount。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/widget/ListView.java?av=f#1538

关于Android猴子在android.widget.HeaderViewListAdapter中导致适配器通知异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com