Я использую FirestorePagingAdapter для отображения изображений из базы данных Firestore. Я хочу вставить нативные объекты Ad в список, прежде чем установить его в режим Recycler, чтобы объявления размещались между изображениями. У меня уже есть код для создания нативной рекламы и вставки их в список. Но так как я использую FirestorePagingAdapter, как я могу изменить список перед установкой его в RecyclerView.
Query query = db.collection("Wallpapers")
.whereEqualTo("category", mCategoryName).orderBy("uploadedDate", Query.Direction.DESCENDING);
PagedList.Config config = new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setPrefetchDistance(2)
.setPageSize(10)
.build();
FirestorePagingOptions<WallpaperResponse> firestorePagingOptions = new FirestorePagingOptions.Builder<WallpaperResponse>()
.setLifecycleOwner(this)
.setQuery(query, config, WallpaperResponse.class)
.build();
firestorePagingAdapter = new FirestorePagingAdapter<WallpaperResponse, WallpaperViewHolder>(firestorePagingOptions){
@NonNull
@Override
public WallpaperViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
switch (viewType) {
/* case NATIVE_AD_VIEW_TYPE:
View unifiedNativeLayoutView = LayoutInflater.from(
viewGroup.getContext()).inflate(R.layout.native_ad,
viewGroup, false);
return new NativeAdViewHolder(unifiedNativeLayoutView);*/
case WALLPAPER_ITEM_VIEW_TYPE:
// Fall through.
default:
View menuItemLayoutView = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.fragment_wallpapers_item_grid, viewGroup, false);
return new WallpaperViewHolder(menuItemLayoutView);
}
}
@Override
protected void onBindViewHolder(@NonNull WallpaperViewHolder holder, int position, @NonNull WallpaperResponse model) {
loadingView.setVisibility(View.GONE);
int viewType = getItemViewType(position);
switch (viewType) {
/*case NATIVE_AD_VIEW_TYPE:
UnifiedNativeAd unifiedNativeAd = (UnifiedNativeAd) mWallpapers.get(position);
populateNativeAdView(unifiedNativeAd, ((NativeAdViewHolder) holder).getAdView());
break;*/
case WALLPAPER_ITEM_VIEW_TYPE:
// fall through
default:
holder.favAnimation.setVisibility(View.GONE);
holder.mode.setVisibility(View.GONE);
holder.author.setVisibility(View.GONE);
WallpaperHelper wallpaperHelper = new WallpaperHelper();
ImageLoader.getInstance().displayImage(model.getThumbUrl(), new ImageViewAware(holder.image),
mOptions.build(), new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
super.onLoadingStarted(imageUri, view);
int color;
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
}
}, null);
}
holder.card.setOnClickListener(v -> {
});
}
};
firestorePagingAdapter.notifyDataSetChanged();
mRecyclerView.setAdapter(Utils.getAnimationAdapter(firestorePagingAdapter));
private void insertAdsInWallpaperItems() {
if (unifiedNativeAds.size() <= 0) {
return;
}
int offset = (wallpaperList.size() / unifiedNativeAds.size()) + 1;
int index = 0;
for (UnifiedNativeAd ad : unifiedNativeAds) {
if(index != 0){
wallpaperList.add(index, ad);
}
index = index + offset;
}
}