2013-07-27 44 views

回答

0

不要因为这个例子

执行任务

new LongOperation().execute(""); 

,任务是这样的。

private class LongOperation extends AsyncTask<String, Void, String> { 

      @Override 
      protected String doInBackground(String... params) { 
       for(int i=0;i<5;i++) { 
        try { 
         Thread.sleep(1000); 
        } catch (InterruptedException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 

       return "Executed"; 
      }  

      @Override 
      protected void onPostExecute(String result) { 
       TextView txt = (TextView) findViewById(R.id.output); 
       txt.setText("Executed"); // txt.setText(result); 
       //might want to change "executed" for the returned string passed into onPostExecute() but that is upto you 
      } 

      @Override 
      protected void onPreExecute() { 
      } 

      @Override 
      protected void onProgressUpdate(Void... values) { 
      } 
    } 

DoinBackground方法是您从服务器上下载数据的地方。并在后期将该数据分配给基础适配器。并且介意一件事是你不能从DoinBackground方法更新视图。你可以使用UIThread来改变视图。

希望它有助于!

0

最好的方法是在创建适配器并将其设置为ListView之前,在AsyncTask中下载数据。

但无论如何,如果你需要下载数据时,已经创建了ListView控件,那么你作为@Arman陌生人说你需要实现内部doInbackgound()所有的工作职能前。

F.e.当你下载图片时,你应该调整它的大小,并执行notifyDataSetChanged()来重绘你的列表视图。

相关问题