2012-07-28 69 views
1

我正在對Twitter應用程序進行搜索組件。我一直在做一個普通類的解析,並嘗試以這種方式添加視圖到活動中,但它不起作用。在我的文章中:
Android 2.3.3: Crash when getting a LinearLayout from (LinearLayout)findViewById(R.id.<linear_layout_id>)
一個非常有用的stackoverflow用戶告訴我,我最好的選擇是將所有解析調用放入一個asynctask中,並將視圖添加到onPostExecute()上的活動。

所以我的問題是,我可以從XML中選擇一個佈局,添加一個視圖,並將其保存在一個asyctask的onPostExecute()?Android AsyncTask:將視圖添加到AsyncTask中的活動?

回答

2

是的,當然要麼傳遞視圖,要麼將包含視圖的Activity傳遞給AsyncTask的構造函數。只要確保不要在doInBackground方法中使用這些對象。

其實剛纔我在上週做過類似的事情:

@Override 
protected void onPostExecute(Article[] articles) { 
    ArrayAdapter<Article> arrayAdapter = new ArticleAdapter(context, articles); 
    listView.setAdapter(arrayAdapter); 
    listView.setVisibility(View.VISIBLE); 
    progressBar.setVisibility(View.GONE); 
} 

ListView的是構造函數的參數相同情況下,這是一個包含視圖的上下文(活動)通過一個ListView。

編輯:說你定義的AsyncTask然後:

  • doInBackground必須返回一個Class3的對象,並採取的Class1對象數組(定義爲1類...)作爲參數
  • onProgressUpdate必須採取一等級2物體的陣列(定義爲等級2 ...)作爲參數
  • onPostExecute必須採取Class3的對象作爲參數
  • ...

欲瞭解更多信息,你可以閱讀的Android文檔:在onPostExecute.If http://developer.android.com/reference/android/os/AsyncTask.html

+0

因此,類定義將是
public MyTask extends AsyncTask ? – ceptno 2012-07-28 21:39:57

+0

不,構造函數參數與AsyncTask的類定義無關。 (編輯答案作爲評論中的佈局不是爲此做的)。這隻會是如果你將它傳遞給execute方法的情況。 – 2012-07-28 21:58:48

+0

要添加視圖,我必須1.在onPostExecute和2.pass Class3中將它做爲佈局或上下文嗎? – ceptno 2012-07-28 22:03:10

1

使用runOnUiThread(mRunnable)方法要進行任何更改到用戶界面的所有變化成runOnUiThread。