簡體   English   中英

如何在另一個線程上的回調內的ArrayAdapter中notifyDataSetChanged? -安卓

[英]How do I notifyDataSetChanged in ArrayAdapter inside a callback on a different thread? - Android

我正在進行網絡通話,然后在完成網絡通話檢索信息后,我想致電notifyDataSetChanged。 如果所有線程都在同一線程上,則此方法有效,但是如果更新發生在另一個線程中,我將如何更新列表?

**

它將拋出此錯誤:

android.view.ViewRootImpl$CalledFromWrongThreadException: 
Only the original thread that created a view hierarchy can touch its views.

您可以使用AsyncTask在單獨的線程上執行網絡操作。 您從UI線程啟動AsyncTask,任務本身將在單獨的線程上運行。 完成AsyncTask后,AsyncTask的onPostExecute方法將再次在UI線程上運行,您可以從該UI線程調用notifyDataSetChanged()方法。

這是Android開發人員文檔中有關AsyncTask的一些有用信息

您應該使用處理程序。 像類的屬性一樣聲明適配器(在任何方法之外)。 並在您的活動中使用以下代碼:

public Handler updateAdapter = new Handler(new Handler.Callback() {
    @Override
    public boolean handleMessage(Message msg)
    {
        //Update code
    }
});

而這在您的線程中(調用處理程序):

updateCode.sendEmptyMessage(0);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM