2013-02-14 54 views
0

我想用的AsyncTask更新的TextView的文本。ListView控件更新完成後的AsyncTask

我在列表視圖中有兩個TextView的,一個是ImageView的

當用戶按下按鈕的ImageView宋會從服務器端進行播放。所以,我已經把代碼中的AsyncTask任務

這是從我呼籲Click事件的ImageView下面是我這樣的

 public View getView(final int position, View convertView, 
      ViewGroup parent) { 

    holder.imgPlay.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 

代碼樣本的自定義適配器和onclick事件我傳遞的TextView中的AsyncTask,我想從互聯網上所以下面獲取數據後改變是我的代碼

 new MetadataTask2().execute(holder.txtMetadata); 

現在的AsyncTask的代碼如下

class MetadataTask2 extends AsyncTask<TextView, Void, IcyStreamMeta> { 
    TextView txtView; 

    @Override 
    protected IcyStreamMeta doInBackground(
      TextView... arg0) { 
        //SOME OPERATION 
     txtView = arg0[0]; 
     return streamMeta; 
    } 

    @Override 
    protected void onPostExecute(IcyStreamMeta result) { 
      txtView.setText("Hiiiiiiii"); 
     } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     try { 
      PD = ProgressDialog.show(CompaniesList.this, "Tuning...", 
        "Please Wait..."); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

現在,這裏u能看到,隨着textView.setText(「HIII」)的文本將被更新,但它不會在列表視圖反映,我需要更新的ListView或適配器,但不知道怎麼做,這樣我就可以見列表視圖文本任何機構可以幫助我

我用下面的代碼更新列表視圖,但仍無助

 adapter.notifyDataSetChanged(); 
     mainListView.setAdapter(adapter); 
     mainListView.invalidate(); 
+0

你打電話'NotifyDataSetChanged()'您的適配器? – 2013-02-14 07:37:22

+0

從哪裏我必須調用notifydatasetchanged ???因爲asnyctask完成saperate過程... – 2013-02-14 07:40:13

回答

1

讓你的適配器是你的活動類的成員變量。然後你將能夠從onPostExecute引用它。

此外,從你的代碼,如果你的TextView是actuallly你打算修改以防萬一(那你大概膨脹的),請記住,你要調用的setContentView在主線程一個是我不清楚在之前doInBackground嘗試修改任何組件。確保這個Textview變量(arg0 [0] ??)是你正在膨脹的變量

+0

因爲定製適配器是不爽快:(我用下面的代碼adapter.notifyDataSetChanged(); mainListView.setAdapter(適配器); mainListView.invalidate() – 2013-02-14 10:11:05

+0

我不明白, ???你解決這個問題你有沒有使用的setContentView調用的AsyncTask如何你TextView的帽子要更新之前 – quinestor 2013-02-14 12:37:27

1

你應該實現你自己的ListView將提供數據到列表視圖的適配器。從適配器調用notifyDataSetChanged()PostExecute()將強制列表視圖從適配器中獲取數據。更新列表視圖直接看起來很奇怪。

+0

因爲定製適配器是不爽快:(我用下面的代碼adapter.notifyDataSetChanged(); \t \t \t \t mainListView.setAdapter(適配器); \t \t \t \t mainListView.invalidate(); – 2013-02-14 10:08:56

+0

我有同樣的問題,文件的'ArrayList'予加載到交流ustom'GridView'其中每個網格項目包含2個'ImageView'和一個'TextView' ...當我嘗試刪除一個項目時圖像更新,但是'TextView'沒有,只有當我回擊按鈕並返回時重新加載頁面。我已在'onPostExecute()'中有'notifyDataSetChanged()',但這沒有幫助。 – Azurespot 2015-04-28 23:32:31

相關問題