我正在编写一个使用 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
提交
取消