2015-01-05 6 views
-1

Мне нужно создать класс AsyncTask, который возвращает меня String [], возвращенный String [] будет использоваться для создания списка, поэтому я думал создать ListActivity внутри класса AsyncTask, но метод onPostExecute не работы, он никогда не называется. Мой код:AsyncTask onPostExecute никогда не вызывал

public class AsyncReadPrices extends AsyncTask<Object, String[], String[]>{ 
static String url = "http://www.mywebsite.com/"; 
static String ConfPath = new String(); 

    protected String[] doInBackground(Object... params){ 
     String[] menus = new String [(int) params[1]]; 
     try{ 

      BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(url+params[0]).openStream())); 
      String line = reader.readLine(); 
      for (int k = 0; k < (int)params[1]; k++) { 
       menus[k] = line; 
       line = reader.readLine(); 
      } 
      Log.i("check 1",""); 
      return menus; 
     } 
     catch (IOException e){ 
      e.printStackTrace(); 
     } 
     Log.i("check 2",""); 
     return menus; 
    } 

@Override 
protected void onPostExecute(final String[] menu) { 
    Log.i("It works!",""); 
    new ListActivity(){ 
     @Override 
     public void setListAdapter(ListAdapter adapter) { 
      Log.i("string", menu[0]); 
      setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, menu)); 
     } 
    }; 
} 

}

+0

Можете ли вы объяснить немного больше? Вызывается вызов 'doInBackground()'? Это крушение. Что еще не происходит/не происходит? – codeMagic

+0

Вызывается класс AsyncTask, doInBackground работает, но метод onPostExecute не вызывается, и я не знаю, почему – ClearCode

+0

Не уверен в 'new ListActivity()', но это неправильный способ создания Activity. Вызывается ли этот журнал, 'Log.i (« Он работает! »,« »);'? – codeMagic

ответ

0

Пожалуйста, избегайте использования ListActivity() внутри метода onPostExecute(). Вы должны либо обновить Adapter, либо ArrayList с возвращаемыми значениями, а затем использовать тот же ArrayList, чтобы заполнить ваш список.

Пожалуйста, попробуйте использовать этот код: -

@Override 
protected void onPostExecute(final String[] menu) { 


    itemListAdapter = new ItemListBaseAdapter( 
       YourActivity.this, data); 
    listView.setAdapter(itemListAdapter); 
} 

// ListView должен быть ранее инициализируется внутри класса активности

// itemListAdapter, если вы используете пользовательский адаптер, иначе непосредственно использовать

+0

Проблема перед ListActivity, onPostExecute не запущена, метод игнорируется – ClearCode

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