как сделать прогресс-бар видимым из адаптера который расширяет FirestorePagingAdapter?

130
12 ноября 2019, 11:40

Для показа списка исполуьзую recyclerview и адаптер который расширяет FirestorePagingAdapter, в котором есть метод onLoadingStateChanged. Хочу сделать ProgressBar видимым при загрузке списка и скрыть его после загрузке, но не получается использовать findViewById в нем.

 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);

        }
    }
}

Как использовать View в методе onLoadingStateChanged при разных состоянии загрузки?

Пробовал передать holder как аргумент но сразу выдает ошибку.

@Override
    protected void onLoadingStateChanged(@NonNull LoadingState state, AdHolder holder) {
        super.onLoadingStateChanged(state);
            switch (state) {
            case LOADING_INITIAL:
            holder.homeRecyclerViewProgressBar.setVisibility(View.VISIBLE);
            .........
}
READ ALSO
Клиент передает серверу две даты, а сервер возвращает количество лет между датами [закрыт]

Клиент передает серверу две даты, а сервер возвращает количество лет между датами [закрыт]

Как правильно передать дату, не возвращает количество лет

143
Вопрос по Java и Github

Вопрос по Java и Github

Я даже не знаю как правильно задать вопрос, сижу и перескакиваю с проблемы на проблему (точнее это не проблема, а мое незнание и отсутствие...

115
Удалить из массива число по индексу, через консоль Java

Удалить из массива число по индексу, через консоль Java

Занести в массив информацию о стоимости L – видов товараОпределить, сколько видов товара имеют стоимость, меньшую, чем средняя стоимость...

137
Ошибка при вызове команды select из базы h2

Ошибка при вызове команды select из базы h2

Всем привет, нужна помощь

127