繁体   English   中英

我可以使用加载程序更新listadapter数据吗

[英]Can I use loader to update listadapter data

嗨,我可以使用Loader(api支持程序包v4)更新listAdapter数据,我将在后台从另一个线程更改它。 这样做是安全的还是使用asyncTask更好? 我想要做的是拥有一个listAdapter,当我按下loadMoreData时,它将在列表中加载更多内容并更新列表,我正在从Internet检索内容,因此无法在UI Thread上运行,因此我正在对其进行更改在背景中。

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

我以前为此目的使用asynctask,但是如果更好,我想更新代码以使用加载程序。

这不能回答您的问题,但是我建议您只在ListView Activity中创建一个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() {
        // ...
    }
}

如果使用加载程序,则在更新数据后,可能要在主线程上使用诸如getLoaderManager()。getLoader(YOUR_LOADER_ID).onContentChanged()之类的东西;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM