我正在編寫一個使用 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); } }}
3 回答

慕桂英4014372
TA貢獻1871條經驗 獲得超13個贊
將以下行更改為onCreate()
ListView list = (ListView) findViewById(R.id.list);
到
list = (ListView) findViewById(R.id.list);

森欄
TA貢獻1810條經驗 獲得超5個贊
從 Android 9 開始,未加密的請求將不起作用,這意味著HttpsURLConnection可以起作用,但HttpURLConnection則不起作用。
然后,您嘗試連接的 URL 必須具有 https:// 訪問權限,否則您應該將其包含在清單中
android:usesCleartextTraffic="true"

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
看來您錯過了在活動內調用異步任務
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView) findViewById(R.id.list);
new BookAsynck().execute(bookUrl);
}
添加回答
舉報
0/150
提交
取消