Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RecyclerView正在复制列表中的前三项_Java_Android_Android Recyclerview - Fatal编程技术网

Java RecyclerView正在复制列表中的前三项

Java RecyclerView正在复制列表中的前三项,java,android,android-recyclerview,Java,Android,Android Recyclerview,我对android相当陌生,我正在尝试使用RecyclerView来显示firebase上托管的内容,但当它出现时,前三项是重复的 我已经尝试了一些解决方案,但似乎都不起作用,任何帮助都将是伟大的 DiscountRecyclerAdapter.java public class DiscountRecyclerAdapter extends RecyclerView.Adapter<com.cianod.comharapp.DiscountRecyclerAdapter.ViewHold

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

            }

        }

    }
公共类DiscountRecyclerAdapter扩展了RecyclerView.Adapter{
公开列表折扣列表;
公共语境;
私有图像视图折扣图像视图;
公共折扣周期适配器(列表折扣列表){
this.discountsList=折扣列表;
}
@凌驾
public com.cianod.comharapp.DiscountRecyclerAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutFlater.from(parent.getContext()).inflate(R.layout.折扣\列表\项,parent,false);
context=parent.getContext();
返回新的com.cianod.comharapp.DiscountRecyclerAdapter.ViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(最终com.cianod.comharapp.DiscountRecyclerAdapter.ViewHolder,内部位置){
holder.setIsRecyclable(假);
String discountName=discountsList.get(position.getDiscount_name();
持有人。设置折扣名称(折扣名称);
String discountDescription=discountsList.get(position.getDiscount_description();
持有人。设置折扣说明(折扣说明);
String discountValue=discountsList.get(position.getDiscount_value();
持有人。设定贴现价值(贴现价值);
字符串image_url=discountsList.get(position.getDiscount_image();
字符串thumbUri=discountsList.get(position.getDiscount_image();
holder.setU图像(图像url,拇指URI);
}
@凌驾
public int getItemCount(){
如果(折扣列表!=null){
退货折扣列表大小();
}否则{
返回0;
}
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
私有视图;
私有文本视图折扣_名称;
公共视图持有者(视图项视图){
超级(项目视图);
mView=项目视图;
}
公共无效设置折扣_名称(字符串消息){
折扣\u名称=mView.findviewbyd(R.id.discount\u名称);
折扣_name.setText(消息);
}
公共无效设置折扣_说明(字符串消息){
折扣\u名称=mView.findviewbyd(R.id.discount\u说明);
折扣_name.setText(消息);
}
公共无效设置折扣值(字符串消息){
折扣\u名称=mView.findviewbyd(R.id.discount\u值);
折扣_name.setText(消息);
}
公共void setu映像(字符串下载URI、字符串拇指URI){
折扣图像视图=mView.findviewbyd(R.id.discount\u图像);
RequestOptions RequestOptions=newrequestoptions();
requestOptions.placeholder(R.drawable.image\u占位符);
Glide.with(context).applyDefaultRequestOptions(requestOptions.load(downloadUri.缩略图(
Glide.with(context.load)(拇指URI)
).进入(折扣图像视图);
}
}
}

我相信问题来自折扣适配器,但我不能肯定。RecyclerView显示在片段上,如果这可能会影响它,我可以附加其他片段(如果必要)。

您的代码没有问题。因此,也许您应该尝试在适配器类中重写这两个方法

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

@Override
public int getItemViewType(int position) {
   return position;
}

您的代码没有问题。因此,也许您应该尝试在适配器类中重写这两个方法

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

@Override
public int getItemViewType(int position) {
   return position;
}

你确定你的数据集没有重复吗?在原始数据中绝对没有重复,我在数据库中有6个项目,只有前三个项目是重复的。你确定你的数据集没有重复吗?在原始数据中绝对没有重复,我在数据库中有6个项目,只有前三个项目是重复的