每次用户启动活动时,我都会尝试更新我的回收站视图。所有数据都保存在SQLite中。
我正在做的简单方法是清除附加到适配器的列表并添加一个像这样的新列表。
public void set(List<contacts> list) {
final sql s = sql.getInstance(getContext());
if (ContactsList != null) {
ContactsList.clear();
ContactsList.addAll(list);
cAdapter.notifyDataSetChanged();
}
}
此功能正常,但耗费大量内存
Skipped xx frames! The application may be doing too much work on its main thread.
我可以在后台使用handler吗?
有没有办法用另一个列表async
更新回收站视图答案 0 :(得分:1)
答案 1 :(得分:-1)
我希望你的适配器中有一个元素列表,addAll只是添加到你的列表中。
所以你可以做的是创建新的Thread(AsyncTask,如果你愿意)并在Ui Thread上运行notifyDataSetChange。像
这样的东西 public void set(List<contacts> list) {
final sql s = sql.getInstance(getContext());
if (ContactsList != null) {
new Thread(new Runnable() {
@Override
public void run() {
ContactsList.clear();
ContactsList.addAll(list);
new Handler(Looper.getMainLooper()).post(
new Runnable() {Handler(Looper.myLopper())
@Override
public void run() {
ContactsList.notifyDataSetChanged();
}
});
}
}.start
}
}