为了账号安全,请及时绑定邮箱和手机立即绑定

NotifyDataSetChanged示例

NotifyDataSetChanged示例

红糖糍粑 2019-06-03 16:31:29
NotifyDataSetChanged示例我试着用在我的Android Application这个notifyDataSetChanged()方法的ArrayAdapter但这对我没用。我发现作为回答,那notifyDataSetChanged()应该在主线程中运行,但是没有这样的例子。有人能发送一个例子或至少一个链接吗?!
查看完整描述

4 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

为了ArrayAdapternotifyDataSetChanged只有在使用add()insert()remove(),和clear()在适配器上。

ArrayAdapter构造时,它为List被传了进来。如果你要通过List这是一个活动的成员,然后更改该活动成员,ArrayAdapter仍然保存对原始文件的引用。List..适配器不知道您更改了List在活动中。

你们的选择是:

  1. 使用

    ArrayAdapter

    若要修改基础列表,请执行以下操作(

    add()insert()remove()clear()

    等等)
  2. 重新创建

    ArrayAdapter

    新的

    List

    数据。(使用大量资源和垃圾收集。)
  3. 创建您自己的类

    BaseAdapter

    ListAdapter

    允许更改基础

    List

    数据结构
  4. 使用

    notifyDataSetChanged()

    每次列表被更新。若要在UI-线程上调用它,请使用

    runOnUiThread()

    Activity

    ..然后,

    notifyDataSetChanged()

    会有用的。


查看完整回答
反对 回复 2019-06-03
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

我最近写过这篇文章,虽然这篇文章很旧,但我认为这对想知道如何实现的人会有帮助。BaseAdapter.notifyDataSetChanged()一步,以正确的方式。

请跟着如何在Android中正确实现BaseAdapter.NotifyDataSetChanged()更新的博客BaseAdapter.tification fyDataSetChanged().


查看完整回答
反对 回复 2019-06-03
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

我也遇到了同样的问题,我不喜欢继续用一个新实例替换整个ArrayAdapter。因此,我让AdapterHelper在其他地方做繁重的工作。

将此添加到通常(尝试)调用通知的地方

new AdapterHelper().update((ArrayAdapter)adapter, new ArrayList<Object>(yourArrayList));adapter.notifyDataSetChanged();

AdapterHelper类

public class AdapterHelper {
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public void update(ArrayAdapter arrayAdapter, ArrayList<Object> listOfObject){
        arrayAdapter.clear();
        for (Object object : listOfObject){
            arrayAdapter.add(object);
        }
    }}


查看完整回答
反对 回复 2019-06-03
  • 4 回答
  • 0 关注
  • 1221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信