To display the list, use the recyclerview and an adapter that extends the FirestorePagingAdapter , which has an onLoadingStateChanged method. I want to make the ProgressBar visible when loading the list and hide it after loading, but I can't use findViewById in it.
public class AdAdapter extends FirestorePagingAdapter<Ad, AdAdapter.AdHolder> { private Context mContext; private ArrayList<String> imageUrls; private ProgressBar homeRecyclerViewProgressBar; public AdAdapter(Context context, @NonNull FirestorePagingOptions<Ad> options) { super(options); this.mContext = context; } @NonNull @Override public AdAdapter.AdHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int position) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.ad_item, viewGroup, false); AdHolder vh = new AdHolder(v); mContext = viewGroup.getContext(); return vh; } @Override protected void onBindViewHolder(@NonNull AdHolder holder, int position, @NonNull Ad model) { holder.textViewTitle.setText(model.getTitle()); holder.textViewPrice.setText(String.valueOf(model.getPrice())); imageUrls = model.getImagesUrls(); Glide.with(mContext) .load(imageUrls.get(0)) .into(holder.imageView); } @Override protected void onLoadingStateChanged(@NonNull LoadingState state) { super.onLoadingStateChanged(state); switch (state) { case LOADING_INITIAL: homeRecyclerViewProgressBar.setVisibility(View.VISIBLE); // The initial load has begun // ... Log.d("someLog", "The initial load has begun"); return; case LOADING_MORE: // The adapter has started to load an additional page // ... Log.d("someLog", "The additional load has begun"); return; case LOADED: homeRecyclerViewProgressBar.setVisibility(View.GONE); // The previous load (either initial or additional) completed // ... Log.d("someLog", "Has loaded"); return; case ERROR: // The previous load (either initial or additional) failed. Call // the retry() method in order to retry the load operation. // ... Log.d("someLog", "Failed to load"); } } class AdHolder extends RecyclerView.ViewHolder { TextView textViewTitle; TextView textViewPrice; ImageView imageView; public AdHolder(View itemView) { super(itemView); textViewTitle = itemView.findViewById(R.id.adTitleMain); textViewPrice = itemView.findViewById(R.id.adPriceMain); imageView = itemView.findViewById(R.id.imageView); homeRecyclerViewProgressBar = itemView.findViewById(R.id.home_recycler_view_progressbar); } } } How to use View in the onLoadingStateChanged method under different loading conditions?
I tried to pass holder as an argument, but immediately gives an error.
@Override protected void onLoadingStateChanged(@NonNull LoadingState state, AdHolder holder) { super.onLoadingStateChanged(state); switch (state) { case LOADING_INITIAL: holder.homeRecyclerViewProgressBar.setVisibility(View.VISIBLE); ......... }