2011-12-16 20 views
2

嗨,我可以使用Loader(api支持包v4)更新listAdapter數據,我將從另一個線程在後臺更改。這樣做是安全的還是使用asyncTask代替它更好? 我想要做的是有一個listAdapter和當我按下loadMoreData它加載列表中的更多內容和更新列表,我從互聯網retreiving內容,所以它不能在UI線程上運行,所以我正在改變它在背景中。我可以使用loader來更新listadapter數據

內容存儲在一個類的Hashmap中,我使用後臺線程更新。

我以前使用asynctask爲此目的,但我想更新我的代碼使用加載程序,如果它更好。

回答

1

這並不回答你的問題,但我建議你在你的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() { 
     // ... 
    } 
} 
+0

它不完全是我想要的評價它,但我尋找別的東西。 – user606669 2011-12-19 15:43:22

0

如果您使用的裝載機,你可能想在更新數據後,在主線程中使用類似 getLoaderManager()getLoader(YOUR_LOADER_ID).onContentChanged()。

相關問題