gpt4 book ai didi

java - Android - 使用 Google BooksAPI 返回一本书的 ID

转载 作者:行者123 更新时间:2023-11-29 23:25:58 24 4
gpt4 key购买 nike

我正在使用 Google Books API 通过搜索术语、查询来显示各种书籍的列表....

到目前为止,一切都按预期进行,但有一个问题,我需要通过它的 id 获取一本书,我相信问题出在我的 BookResponse

更新 我想我应该在 BookItems 类中添加一个序列化 ID,但我不知道从那里去哪里

附言。在下面你会发现每个类和一个附加的图像来显示 JSON 结构

在 MainActivity 中搜索

ApiInterface apiService =
RetrofitInstance.getRetrofitInstance().create(ApiInterface.class);

retrofit2.Call<BookResponce> call = apiService.getBooksById("zyTCAlFPjgYC", BOOKS_API_KEY);
call.enqueue(new Callback<BookResponce>() {
@Override
public void onResponse(retrofit2.Call<BookResponce> call, Response<BookResponce> response) {
bookResp = response.body();
for (int i = 0; i == 0; i++){
bookList.add(i, bookResp.getBooks().get(i).getBookData());
}

cAdapter.notifyDataSetChanged();
}

@Override
public void onFailure(retrofit2.Call<BookResponce> call, Throwable t) {
Toast.makeText(this, "failed", Toast.LENGTH_LONG).show();
}
});

BookResponse 类

public class BookResponce {
@SerializedName(value="items")
ArrayList<BookItems> bookItems;

@SerializedName(value="totalItems")
int totalItems;

public int getTotalItems() { return totalItems; }
public ArrayList<BookItems> getBooks() { return bookItems; }
}

BookItems 类

public class BookItems {
//This is what I added
@SerializedName(value = "id")
String id;

@SerializedName(value="volumeInfo")
Book bookData;

//and this...
public String getId() {
return id;
}

public Book getBookData(){return bookData; }
}

API接口(interface)类

public interface ApiInterface {

@GET("volumes/{id}")
Call<BookResponce> getBooksById(@Path("id") String bookId,
@Query("API_KEY") String apiKey);

@GET("volumes")
Call<BookResponce> getBooksByQuery(@Query("q") String query,
@Query("API_KEY") String apiKey, @Query("maxResults") int maxResults);
}

最佳答案

当您执行搜索时,在您的 bookList 中添加项目后,只需添加:

bookList.get(i).setBookId(bookResp.getBooks().get(i).getId());

这是您案例中的完整示例:

ApiInterface apiService =
RetrofitInstance.getRetrofitInstance().create(ApiInterface.class);

retrofit2.Call<BookResponce> call = apiService.getBooksById("zyTCAlFPjgYC", BOOKS_API_KEY);
call.enqueue(new Callback<BookResponce>() {
@Override
public void onResponse(retrofit2.Call<BookResponce> call, Response<BookResponce> response) {
bookResp = response.body();
for (int i = 0; i == 0; i++){
bookList.add(i, bookResp.getBooks().get(i).getBookData());

//This is what you must add
bookList.get(i).setBookId(bookResp.getBooks().get(i).getId());
}

cAdapter.notifyDataSetChanged();
}

@Override
public void onFailure(retrofit2.Call<BookResponce> call, Throwable t) {
Toast.makeText(this, "failed", Toast.LENGTH_LONG).show();
}
});

如果有人有更好的解决方案,欢迎编辑/添加他的!

关于java - Android - 使用 Google BooksAPI 返回一本书的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53572629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com