2016-12-18 4 views
0

Я новичок программист Android, экспериментирующий с AsyncTask и выполняющий HTTP-запросы. Моя цель - выполнить HTTP-запрос с помощью AsyncTask. Мой AsyncTask ниже:Как вернуть список с помощью AsyncTask?

private class DownloadFilesTask extends AsyncTask<String, Void, Void> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 
    @Override 
    protected List<Book> doInBackground(String... params) { 
     return Network.getBookData(params[0]); 
    } 
    @Override 
    protected void onProgressUpdate(Void... values) { 
     super.onProgressUpdate(values); 
    } 
    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
    } 
} 

Существует ошибка, которая говорит, что в методе doInBackground(String... params), есть попытка использовать несовместимый тип возвращаемого значения. Как я могу исправить это и все еще вернуть метод List<Book>?

+0

В чем проблема? Нет общей проблемы с возвратом списка, просто помните, что возвращаемое значение передается в onPostExecute. Его не возвращают из выполнения –

+1

читайте здесь сначала -> http://stackoverflow.com/questions/25647881/android-asynctask-example-and-explanation –

+0

Спасибо Charuka. Обновленный вопрос, основанный на этом сообщении. –

ответ

1

Вы можете передать параметр dataUrl в конструктор задачи или в качестве параметра задачи. Способ использования AsyncTask немного изменится в зависимости от того, какой вы используете.

В качестве параметра конструктора:

new DownloadFilesTask(someUrl).execute(null); 

В качестве параметра задачи

new DownloadFilesTask().execute(someUrl); 

Вы должны переопределить onPostExecute(List<Book> result) в классе задач для того, чтобы сделать что-то с результатами HTTP на потоке пользовательского интерфейса, такого как отображение объектов Book в списке.

+0

Я пробовал как параметр конструктора, так и параметр задачи, и оба они не работают. –

+0

Что значит, что они не работают? Является ли это компиляцией или ошибкой времени выполнения? Можете ли вы предоставить код для 'Network.getBookData'? –

+0

Хорошо. Вот он: –

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