为什么我使用 AsyncTask 时 ListView 没有填充?

我正在编写一个使用 Google 图书搜索 API 的应用程序,该应用程序要做的就是根据我在应用程序代码中以字符串形式提供的搜索查询显示图书列表,我使用 AsyncTask 内部类来处理后台工作(发出 HTTP 请求、JSON 格式化...等),我还有书籍服装适配器和书籍类来从中获取数据,我的问题是应用程序不会在列表视图中显示任何书籍。

这是我的代码:

我的活动:

public class MainActivity extends AppCompatActivity {


    final static String bookUrl = "https://www.googleapis.com/books/v1/volumes?q=android&maxResults=6";

    private BookAdapter bookAdapter;


    private ArrayList<Book> books;


    private ListView list;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



         list = (ListView) findViewById(R.id.list);

         new BookAsynck().execute(bookUrl);



    }


    private class BookAsynck extends AsyncTask<String, Void, ArrayList<Book>> {

        @Override

        protected ArrayList<Book> doInBackground(String... strings) {

            books = Utils.fetchBookData(bookUrl);

            return books;

        }


        @Override

        protected void onPostExecute(ArrayList<Book> books) {

            bookAdapter = new BookAdapter(MainActivity.this, books);

            list.setAdapter(bookAdapter);

        }

    }


}


子衿沉夜
浏览 89回答 3
3回答

慕桂英4014372

将以下行更改为onCreate()ListView&nbsp;list&nbsp;=&nbsp;(ListView)&nbsp;findViewById(R.id.list);到list&nbsp;=&nbsp;(ListView)&nbsp;findViewById(R.id.list);

森栏

从 Android 9 开始,未加密的请求将不起作用,这意味着HttpsURLConnection可以起作用,但HttpURLConnection则不起作用。然后,您尝试连接的 URL 必须具有 https:// 访问权限,否则您应该将其包含在清单中android:usesCleartextTraffic="true"

阿波罗的战车

看来您错过了在活动内调用异步任务@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);&nbsp;list = (ListView) findViewById(R.id.list);new BookAsynck().execute(bookUrl);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java