代码之家  ›  专栏  ›  技术社区  ›  Bundeeteddee

Android:从后台线程修改适配器内容

  •  3
  • Bundeeteddee  · 技术社区  · 15 年前

    确保适配器的内容没有从后台线程修改

    活动 列表视图 在前景中, 绑定到消息队列的数据,并且消息进入套接字。将新消息添加到队列中将引发上述异常。除非我预先填充 基极适配器 使用消息队列(比如在BaseAdapter中有自己的消息队列)并在新消息进来时更新它们,我真的找不到解决这个问题的方法。

    我真的不想加倍努力保持这两个队列的更新,当然有更好的方法来做到这一点?由于为滚动提供服务的适配器中可能存在延迟,并且发出了notifyDataSetChanged调用,因此发送广播around也不起作用。

    2 回复  |  直到 15 年前
        1
  •  2
  •   CommonsWare    15 年前

    使用 Handler 从主应用程序线程修改“消息队列”。

        2
  •  2
  •   John    13 年前

    我也有这个问题。我的旧适配器偶尔还是会崩溃的。因此,当需要重新创建适配器时,我会执行以下操作:

    //Clear adapter's array
    if (!array.isEmpty()) { array.clear(); }
    if (adapter != null) { adapter = null; }
    setListAdapter(adapter);
    
    //Later code
    //array gets repopulated
    //adapter gets recreated
    setListAdapter(adapter);