我开发了一个将多个项目加载到recyclerView
.
这些项目是由用户上传或从 Google Books API 加载的书籍。
每个用户都有他们的“图书馆”,我在其中存储书籍的 ID。
当用户进入他的图书馆时,我使用 for 循环从数据库中加载书籍。
如果 ID 来自 Google Books API,我从那里加载它,否则,我从我的数据库加载它。
现在,当我运行 for 循环时,它会在 Google Book API 的加载完成之前移动到下一次迭代,这会导致我的 recyclerView 出现问题。
我使用以下代码:
for (QueryDocumentSnapshot document : task.getResult()) {
if (document.getString( "BookID" ).length() > AppConstants.UPLOADED_BOOK_LENGTH) {
MyBooks.add( new DiscoverBooks( document.getString( "BookID" ) ) );
MyBooksTitle.add( document.getString( "BookTitle" ) );
MyBooksAuthor.add( document.getString( "BookAuthor" ) );
MyBooksURL.add( "" );
} else {
MyBookClient client = new MyBookClient();
client.getBooks( document.getString( "BookID" ), new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
if (response != null) {
final MyBook books = MyBook.fromJson( response );
MyBooksGBS.add( new DiscoverBooks( document.getString( "BookID" ) ) );
MyBooksGBSTitle.add( books.getTitle() );
MyBooksGBSAuthor.add( books.getAuthor() );
MyBooksGBSURL.add( books.getCoverUrl() );
}
}
} );
}
dateCreatedOrig.add( (Timestamp) document.get( "DateCreated" ) );
counter = counter + 1;
}
List<List<DiscoverBooks>> MyBooksWithAdsPartsGBS = Lists.partition( MyBooksGBS, AppConstants.ADS_STEP_MYBOOKS );
List<List<String>> MyBooksTITLESWithAdsPartsGBS = Lists.partition( MyBooksGBSTitle, AppConstants.ADS_STEP_MYBOOKS );
List<List<String>> MyBooksAUTHORSWithAdsPartsGBS = Lists.partition( MyBooksGBSAuthor, AppConstants.ADS_STEP_MYBOOKS );
List<List<String>> MyBooksURLSWithAdsPartsGBS = Lists.partition( MyBooksGBSURL, AppConstants.ADS_STEP_MYBOOKS );
List<List<DiscoverBooks>> MyBooksWithAdsPartsMan = Lists.partition( MyBooks, AppConstants.ADS_STEP_MYBOOKS );
List<List<String>> MyBooksTITLESWithAdsPartsMan = Lists.partition( MyBooksTitle, AppConstants.ADS_STEP_MYBOOKS );
List<List<String>> MyBooksAUTHORSWithAdsPartsMan = Lists.partition( MyBooksAuthor, AppConstants.ADS_STEP_MYBOOKS );
List<List<String>> MyBooksURLSWithAdsPartsMan = Lists.partition( MyBooksURL, AppConstants.ADS_STEP_MYBOOKS );
MyBooksWithAdsPartsAll = new ArrayList<>( MyBooksWithAdsPartsMan );
MyBooksWithAdsPartsAll.addAll( 0, MyBooksWithAdsPartsGBS );
MyBooksTITLESWithAdsPartsAll = new ArrayList<>( MyBooksTITLESWithAdsPartsMan );
MyBooksTITLESWithAdsPartsAll.addAll( 0, MyBooksTITLESWithAdsPartsGBS );
MyBooksAUTHORSWithAdsPartsAll = new ArrayList<>( MyBooksAUTHORSWithAdsPartsMan );
MyBooksAUTHORSWithAdsPartsAll.addAll( 0, MyBooksAUTHORSWithAdsPartsGBS );
MyBooksURLSWithAdsPartsAll = new ArrayList<>( MyBooksURLSWithAdsPartsMan );
MyBooksURLSWithAdsPartsAll.addAll( 0, MyBooksURLSWithAdsPartsGBS );
我遇到的问题是我遇到了以下问题:
MyBooksWithAdsPartsAll = new ArrayList<>( MyBooksWithAdsPartsMan );
MyBooksWithAdsPartsAll.addAll( 0, MyBooksWithAdsPartsGBS );
然后给了我错误的大小,MyBooksWithAdsPartsAll
因为它没有添加所有MyBooksWithAdsPartsGBS
.
谢谢