如何使用AsyncTask返回List?

时间:2016-12-18 03:24:53

标签: android android-asynctask

我是一名尝试使用AsyncTask并执行HTTP请求的新手程序员。我的目标是能够使用AsyncTask执行HTTP请求。我的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>

1 个答案:

答案 0 :(得分:1)

您可以将new DownloadFilesTask(someUrl).execute(null); 参数传递给任务的构造函数,也可以作为任务的参数。您使用AsyncTask的方式会略有不同,具体取决于您使用的方式。

作为构造函数参数:

new DownloadFilesTask().execute(someUrl);

作为任务参数

onPostExecute(List<Book> result)

您应该在Task类中覆盖 <div class="sidebar-menu"> <ul> <li><a href="#"><i class="fa fa-truck" aria-hidden="true"></i> Service </a></li> <li><a href="#"><i class="fa fa-trophy" aria-hidden="true"></i> Product </a></li> <li><a href="#"><i class="fa fa-trophy" aria-hidden="true"></i> Agreement </a></li> <li><a href="#"><i class="fa fa-trophy" aria-hidden="true"></i> Contract </a></li> </ul> </div> ,以便在UI线程上对HTTP结果执行某些操作,例如在列表中呈现Book对象。