【问题标题】:Android - Update ListView items without call NotifyDataSetChanged()Android - 更新 ListView 项目而不调用 NotifyDataSetChanged()
【发布时间】:2017-08-30 18:08:22
【问题描述】:

我正在尝试开发一个蓝牙 API,它有一个侦听器,可以在扫描后找到附近的所有蓝牙设备。我使用此侦听器将所有找到的设备存储在一个列表中(每次我发现一个设备都存储在列表中)

我的想法是:开发人员可以将此列表引用到他的适配器中,以显示附近所有可用的设备。如何在不调用adapter.notifyDataSetChanged() 的情况下更新和通知对适配器的更改?原因很简单:当设备正在扫描时,我想显示创建的设备。

如果您认为我的想法是错误的,任何想法都会受到赞赏。

谢谢。

【问题讨论】:

  • Recyclerview 在这种情况下非常有用。您可以使用 adapter.notifyItemInserted() 它将更新适配器数据并动画数据条目。

标签: android listview bluetooth listener adapter


【解决方案1】:

我的想法是:开发人员可以将此列表引用到他的适配器中 显示附近所有可用的设备。我怎样才能做到更新和 无需调用即可通知适配器的更改 适配器.notifyDataSetChanged()?原因很简单:虽然设备 正在扫描我要显示创建的设备。

只需使用 runnable 以分钟为单位更新任何更改。这是另一种方式,无需调用adapter.notifyDataSetChanged()

此代码每分钟运行一次。

refresh = new Runnable() {
            @Override
            public void run() {
                //Clear the list
                //Call the list ie. Asynctask
                handler.postDelayed(this, 60 * 1000);
            }
        };

        handler.postDelayed(refresh, 60 * 1000);

【讨论】:

    【解决方案2】:

    您是否在询问如何通知列表中推送了单个新数据?

    如果是这样,我的一篇文章非常详细地描述了这样做的过程RecyclerView Adapters

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多