【问题标题】:Fetch contacts and show simultaneously获取联系人并同时显示
【发布时间】:2018-05-03 06:07:03
【问题描述】:

我正在获取联系人,这项工作进展顺利。但我也尝试显示 50 个已获取的联系人,即用户不必等到所有联系人都已获取。 我尝试使用 Asynctask 和 Thread ,但是当我去通知列表适配器时,错误来了。

"适配器的内容发生了变化但是ListView没有收到 通知。确保您的适配器的内容没有被修改 来自后台线程,但仅来自 UI 线程。确保您的 适配器在其内容更改时调用 notifyDataSetChanged()"

【问题讨论】:

  • 您从哪里获取您的联系人?您总共有多少联系人?
  • 来自 Android 数据库。我有 8000 个联系人但我解决了问题实际上,如果您在 UI 线程中通知列表,您必须在 UI 线程中添加集合(列表)添加,这对我来说很尴尬。 stackoverflow.com/questions/3132021/…
  • 只需使用 google 的 paging 支持库 - 无需重新发明轮子

标签: android multithreading android-asynctask lazy-loading contacts


【解决方案1】:

确保从 AsyncTask 的 onProgressUpdate() 方法更新适配器。 onProgressUpdate() 可以通过在 yourdoInBackground() 中调用 publishProgress() 来调用。 doInBackground() 在后台线程中运行,而onProgressUpdate() 在您的 UI 线程中运行。

【讨论】:

  • 不,我还有其他问题,但我解决了这个问题,感谢 Sriram 的回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多