RecyclerView дублирует первые три элемента в списке - PullRequest
1 голос
/ 02 апреля 2019

Я довольно новичок в Android, и я пытаюсь использовать RecyclerView для отображения контента, размещенного на firebase, но когда он появляется, первые три элемента дублируются.

Я попробовал несколько решений, но ни одно из них не сработало, любая помощь была бы отличной!

DiscountRecyclerAdapter.java

public class DiscountRecyclerAdapter extends RecyclerView.Adapter<com.cianod.comharapp.DiscountRecyclerAdapter.ViewHolder> {

        public List<Discounts> discountsList;
        public Context context;
        private ImageView discountImageView;

        public DiscountRecyclerAdapter(List<Discounts> discountsList){

            this.discountsList = discountsList;

        }

        @Override
        public com.cianod.comharapp.DiscountRecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.discount_list_item, parent, false);
            context = parent.getContext();
            return new com.cianod.comharapp.DiscountRecyclerAdapter.ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(final com.cianod.comharapp.DiscountRecyclerAdapter.ViewHolder holder, int position) {

            holder.setIsRecyclable(false);

            String discountName = discountsList.get(position).getDiscount_name();
            holder.setDiscount_Name(discountName);

            String discountDescription = discountsList.get(position).getDiscount_description();
            holder.setDiscount_Description(discountDescription);

            String discountValue = discountsList.get(position).getDiscount_value();
            holder.setDiscount_Value(discountValue);


            String image_url = discountsList.get(position).getDiscount_image();
            String thumbUri = discountsList.get(position).getDiscount_image();
            holder.setDiscount_Image(image_url, thumbUri);

        }


        @Override
        public int getItemCount() {

            if(discountsList != null) {

                return discountsList.size();

            } else {

                return 0;

            }

        }

        public class ViewHolder extends RecyclerView.ViewHolder {

            private View mView;

            private TextView discount_name;

            public ViewHolder(View itemView) {
                super(itemView);
                mView = itemView;
            }

            public void setDiscount_Name(String message){

                discount_name = mView.findViewById(R.id.discount_name);
                discount_name.setText(message);

            }

            public void setDiscount_Description(String message){

                discount_name = mView.findViewById(R.id.discount_description);
                discount_name.setText(message);

            }

            public void setDiscount_Value(String message){

                discount_name = mView.findViewById(R.id.discount_value);
                discount_name.setText(message);

            }

            public void setDiscount_Image(String downloadUri, String thumbUri){

                discountImageView = mView.findViewById(R.id.discount_image);

                RequestOptions requestOptions = new RequestOptions();
                requestOptions.placeholder(R.drawable.image_placeholder);

                Glide.with(context).applyDefaultRequestOptions(requestOptions).load(downloadUri).thumbnail(
                        Glide.with(context).load(thumbUri)
                ).into(discountImageView);

            }

        }

    }

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

1 Ответ

0 голосов
/ 02 апреля 2019

В вашем коде нет ничего плохого. Так что, возможно, вам следует попробовать переопределить эти два метода в классе вашего адаптера

@Override
public long getItemId(int position) {
    return position;
}

@Override
public int getItemViewType(int position) {
   return position;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...