2013-05-31 4 views
-1

У меня есть адаптер для ListView, внутри которого я запускаю AsyncTask, которые скачивают файл. Я хочу обновить ListView, когда моя загрузка закончена.Запустить действие после завершения работы AsyncTask

Я думаю, что я должен использовать: adapter.notifyDataSetChanged() когда AsyncTask.getStatus() является FINISHED, но я не понял, как это сделать, она всегда проходит через «если», потому что состояние getStatus() является RUNNING.

final DownloadTask async = new DownloadTask(context, position, list); 

button1.setOnClickListener(new Button.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if (button1.getText() == "Télécharger") { 
      button1.setEnabled(false); 
      button1.setText("Téléchargement en cours ..."); 
      async.execute(0); 
      // if(async.getStatus() == AsyncTask.Status.FINISHED){ 
      // // Try to refresh the view here 
      // Log.i("TAG","FINISHED !"); 
      // } 
     } else if (button1.getText() == "Lire") { 
      Intent i1 = new Intent(context, WebActivity.class); 
      i1.putExtra("position", position); 
      context.startActivity(i1); 
     } 
    } 

}); 
+1

использование onPostExecute. список ListView? – Blackbelt

+0

третьим параметром вашей AsyncTask является ListView? – Blackbelt

+0

«list» - это json, хранящийся внутри строки, он содержит URL-адрес загружаемого файла. – kom

ответ

3

AsyncTask поставляется с onPostExecute(Result), который работает на UI Thread и предоставляет именно функциональность вам нужно.

+0

Но AsyncTask находится в другом классе, он не перезагружает представление, если запускает notifyDataSetChanged. – kom

+0

OK, если я переведу AsyncTask внутри класса Adapter, я могу запустить notifyDataSetChanged, спасибо! – kom

Смежные вопросы