gpt4 book ai didi

Android - setListAdapter() + notifyDataSetChanged() 说明

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

我有一个 ListFragment,其数据由自定义适配器填充(在我的例子中是 SimpleAdapter)。我在扩展 ListFragment 的类中使用 notifyDataSetChanged() 时遇到问题。经过大量的环顾四周和几个(有用的)Stack Overflow 帖子之后:

listview not updating with notifydatasetchanged() call

Android ListView not refreshing after notifyDataSetChanged

adapters notifyDataSetChanged does not work

notifyDataSetChanged not working

ListView does not update when calling notifyDataSetChanged from a BaseAdapter

我知道一个松散(并且非常不推荐)的解决方法是使用 setListAdapter() 重新设置您的适配器。但是我现在也面临着这方面的问题。

文档,http://developer.android.com/reference/android/app/ListFragment.html#setListAdapter(android.widget.ListAdapter) , 提到 setListAdapter()

Provides the cursor for the list view.

但是我还有一些疑问。

Q1。使用 setListAdapter() 多次初始化适配器是否指向同一个适配器实例?

Q2。当使用 setListAdapter() 多次设置适配器时调用 getListAdapter() 然后调用 notifyDataSetChanged() 时实际发生了什么?

Q3。这个问题是基于 Q2 的假设 - 当 notifyDataSetChanged() 在多次设置适配器时被调用时,那些适配器实例中的哪一个(这部分是假设),如果它们存在'实际上是被通知更改?

我是 Android 的初学者,我相信有很多细微差别我不明白。如果你能澄清这些问题,我将不胜感激。也非常感谢您的宝贵时间。

最佳答案

Q1。是否使用 setListAdapter()“指向”多次初始化适配器 相同的适配器实例?

答案: 初始化适配器将仅指向您使用 setListAdapter 设置的最后一个实例。

Q2. What actually happens when a call is made to getListAdapter() and then to 
notifyDataSetChanged() when an adapter has been set multiple times using
setListAdapter() ?

答案:无论您初始化了多少个适配器,只有最后一个实例将使用 getListAdapter() 检索。当您使用 notifyDataSetChanged() 只有使用 getListAdapter() 检索到的最后一个实例才会被刷新,即;最后一个实例将被重新加载(通过调用 getView)。

Q3. This question is based on an assumption from Q2- when notifyDataSetChanged() is 
called when an adapter is set multiple times, which of those adapter instances (this
part is the assumption), if they exist' is actually being notified for change ?

Ans: 上面的答案包含对此的解释。

关于Android - setListAdapter() + notifyDataSetChanged() 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24424384/

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