我可以使用loader来更新listadapter数据

时间:2011-12-16 17:24:57

标签: android

您可以使用Loader(api支持包v4)更新listAdapter数据,我将从后台的另一个线程更改。这样做是否安全,或者使用asyncTask更好。 我想要做的是有一个listAdapter,当我按下loadMoreData时,它会在列表中加载更多内容并更新列表,我正在从互联网上检索内容,所以它无法在UI线程上运行,所以我正在改变它在背景中。

内容存储在类中的Hashmap中,我使用后台线程进行更新。

我以前使用asynctask用于此目的,但我想更新我的代码以使用loader更好。

1 个答案:

答案 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() {
        // ...
    }
}