0

我开发了一个将多个项目加载到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.

谢谢

4

0 回答 0