gpt4 book ai didi

android - 即使在适配器上调用 notifyDataSetChange() 后,抽屉导航 ListView 也不会更新新项目

转载 作者:行者123 更新时间:2023-11-30 02:59:48 25 4
gpt4 key购买 nike

我在抽屉导航上呈现了一个 ListView。 ListView 的内容由我的自定义适配器(派生自 BaseAdapter)提供,它一个接一个地附加两个数组,如下所示

*@Override
public int getCount() {
return array1.size() + array2.size();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (position < array1.size())
// return a view generated from first array
}
else {
// returns a view generated from the second array
}
}

ListView 是这样连接到适配器的

mDrawerList.setAdapter(adapter);

最初在onCreate()之后,array2是空的;只有 array1 被填充并正确呈现在 ListView 上。之后,稍微延迟后,后台线程填充 array2,我希望新项目显示在列表中。为此,我从主线程向适配器发出 notifyDataSetChanged()。不幸的是,这不会使用第二个数组中的新项目更新 ListView UI。在调试时,我发现正在调用我的 getCount() 方法,该方法正确返回组合数组大小计数,但未调用 getView() 方法根本。我确保 ListView 不会被其他重叠的小部件隐藏。

奇怪的是,一旦我点击 ListView,它就会根据需要刷新为新添加的项目。除了调用 notifyDataSetChanged() 以编程方式触发此类刷新之外,我还需要做什么?

最佳答案

最好的方法是使用 ArrayAdapter 。因此,当您有新项目要添加到列表中时...只需调用 adapter.add("your object"),它将负责调用 getView()添加的项目。

注意:这会将项目添加到 ListView 中的最后一个项目。

关于android - 即使在适配器上调用 notifyDataSetChange() 后,抽屉导航 ListView 也不会更新新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22713972/

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