【发布时间】:2014-09-07 19:04:49
【问题描述】:
在我的应用程序中,我有一个名为“联系人”的按钮,允许用户选择联系人以添加到他或她的朋友列表中。单击时,用户会看到所有用户联系人的列表视图。每个列表视图行都包含联系人显示名称、图标、电子邮件地址和一个按钮。名称、图标和电子邮件均使用 ContactsContract 类获取。
我遇到的问题是处理所有用户的联系人在计算上非常昂贵。
我尝试了两种解决方案:
-
在
CursorAdapter中,我尝试修改bindView方法。我传入了一个查询用户联系人的游标,在bindView方法中,我对我的服务器执行了一个异步调用,以将联系人的关系返回给当前用户。即,如果联系人安装了应用程序并且是朋友,则该按钮将显示“删除”。此调用将确定按钮类型并设置适当的onClickListeners。- 这不起作用,因为它会导致列表非常缓慢、不流畅并且感觉非常滞后。
-
我只是尝试在一些不同的线程中加载联系人和服务器查询。当它完成加载时,我会使用已经在不同线程中确定的名称、图标、电子邮件和按钮类型来初始化
BaseAdapter。- 这不起作用,因为加载联系人需要 30 - 40 秒。不过,加载完成后就流畅多了。
如何解决这个问题?
我应该先从服务器获取数据还是为适配器中的每个项目预加载数据?
编辑:
布局看起来类似:
【问题讨论】:
标签: android multithreading listview android-listview android-contacts