您可以使用Loader(api支持包v4)更新listAdapter数据,我将从后台的另一个线程更改。这样做是否安全,或者使用asyncTask更好。 我想要做的是有一个listAdapter,当我按下loadMoreData时,它会在列表中加载更多内容并更新列表,我正在从互联网上检索内容,所以它无法在UI线程上运行,所以我正在改变它在背景中。
内容存储在类中的Hashmap中,我使用后台线程进行更新。
我以前使用asynctask用于此目的,但我想更新我的代码以使用loader更好。
答案 0 :(得分:1)
这不能解答您的问题,但我建议您只在ListView活动中创建Handler
并将更新传递给处理程序(通过对Activity的方法调用)。
public class StuffActivity extends Activity {
ListView mLister;
Handler mHander;
ArrayList<String> mStuff = new ArrayList<String>();
@Override public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// Init widgets and ListView
mHandler = new Handler() {
@Override public void handleMessage(Message msg) {
if (msg != null && msg.obj != null) {
if (msg.obj instanceOf String)
mStuff.add(msg.obg);
}
updateListView();
}
}
}
public void updateList(String msg) {
mHandler.dispatchMessage(new Message(0, msg));
}
private void updateListView() {
// ...
}
}