跟着站长的阳光沙滩这个教程做的...看log看见RecyclerView一个创建了8个item,然后第9个,18个,27,36,45个item的数据反复被覆盖.一次请求回来的数据是52条,我这边数也是52个item一个没少...向下滑动的过程中没有滑出屏幕这个item也会被反复重新绑定数据..动图传不上来,只能截图了
您的每一个用心回答,都会让这个世界变得更美好一些!
各位甩锅...我这边自己解决了..开始以为是组建冲突,,一个个删了还这样..最后发现是自己刚学的viewBinding在adapter里面的使用有问题
【向下滑动的过程中没有滑出屏幕这个item也会被反复重新绑定数据】适配器代码贴一贴
图画得不错,但是代码猜不出来。
提出来的问题好像没法重新编辑了,修改后在提交就显示问题不存在..下面是适配器的代码:
public class HomePagerContentAdapter extends RecyclerView.Adapter<HomePagerContentAdapter.InnerHolder> { List<HomePagerContent.DataBean> data = new ArrayList<>(); private ItemHomePagerContentBinding mBinding; @NonNull @Override public InnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { logUtils.d(this, "----------------onCreateViewHolder"); mBinding = ItemHomePagerContentBinding.inflate(LayoutInflater.from(parent.getContext()),parent,false); return new InnerHolder(mBinding.getRoot()); } @Override public void onBindViewHolder(@NonNull InnerHolder holder, int position) { logUtils.d(this, "----------------onBindViewHolder"); //设置数据 HomePagerContent.DataBean dataBean = data.get(position); holder.setData(dataBean); } @Override public int getItemCount() { return data.size(); } public void setData(List<HomePagerContent.DataBean> contents) { logUtils.d(this, "-----------------"+contents.size()); data.clear(); data.addAll(contents); notifyDataSetChanged(); } public void addData(List<HomePagerContent.DataBean> contents) { //添加之前拿到原来的size int olderSize = data.size(); data.addAll(contents); //更新UI notifyItemRangeChanged(olderSize,contents.size()); } public class InnerHolder extends RecyclerView.ViewHolder { public InnerHolder(@NonNull View itemView) { super(itemView); } public void setData(HomePagerContent.DataBean dataBean) { mBinding.goodsTitle.setText(dataBean.getTitle()); logUtils.d(this, dataBean.getTitle()+"------"+ (i++) ); //根据图片框的大小动态请求不同大小的图片 ViewGroup.LayoutParams coverParams = mBinding.goodsCover.getLayoutParams(); int width = coverParams.width; int height = coverParams.height; int coverSize = Math.max(width, height); String coverUrl = "https:" + dataBean.getPict_url()+"_"+coverSize+"x"+coverSize+".jpg"; Glide.with(itemView.getContext()).load(coverUrl).into(mBinding.goodsCover); mBinding.goodsOffPrise.setText(String.format(itemView.getContext().getString(R.string.text_goods_off_prise), dataBean.getCoupon_amount())); mBinding.goodsAfterOffPrise.setText(dataBean.getZk_final_price()); mBinding.goodsOriginalPrise.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); mBinding.goodsSellCont.setText(String.format(itemView.getContext().getString(R.string.text_goods_sell_cont), dataBean.getVolume())); } } }
各位甩锅...我这边自己解决了..开始以为是组建冲突,,一个个删了还这样..最后发现是自己刚学的viewBinding在adapter里面的使用有问题
【向下滑动的过程中没有滑出屏幕这个item也会被反复重新绑定数据】适配器代码贴一贴
图画得不错,但是代码猜不出来。
提出来的问题好像没法重新编辑了,修改后在提交就显示问题不存在..下面是适配器的代码: