RecyclerView子项布局是:imageview+textview,然后重新安装后,imageview+textview显示的数据和之前不一样了。是一些错乱的数据【概率性出现,并不是每次重新安装都会出现!!!】
您的每一个用心回答,都会让这个世界变得更美好一些!
内容显示由谁控制呢?适配器吧。那你是不是要把适配器的代码贴上来呢?
public class HomeRecAdapter extends RecyclerView.Adapter<HomeRecAdapter.MyRecylerViewHolder> { private String TAG = this.getClass().getSimpleName(); //② 创建ViewHolder public static class MyRecylerViewHolder extends RecyclerView.ViewHolder { public final TextView tvName; public final TextView tvName1; public final ImageView ivSugar; public final TextView tvPrice; public final TextView tvPrice1; public RelativeLayout rlSugar; public final TextView tvMini; public final LinearLayout llPreice; private final View ivCoinFuhao; public MyRecylerViewHolder(View view) { super(view); ivSugar = view.findViewById(R.id.iv_sugar); tvName = view.findViewById(R.id.tv_name); tvName1 = view.findViewById(R.id.tv_name1); tvPrice = view.findViewById(R.id.tv_price); tvPrice1 = view.findViewById(R.id.tv_price1); rlSugar = view.findViewById(R.id.rl_sugar); tvMini = view.findViewById(R.id.tv_mini); llPreice = view.findViewById(R.id.ll_price); ivCoinFuhao = view.findViewById(R.id.iv_coin_fuhao); } } private ArrayList<GoodsBean> goodsBeans; public void setItemListener(RecyclerItemListener itemListener) { this.itemListener = itemListener; } private RecyclerItemListener itemListener; public HomeRecAdapter(ArrayList<GoodsBean> goodsBeans) { this.goodsBeans = goodsBeans; // for (GoodsBean goodsBean : goodsBeans) { // Log.d("ttt ",goodsBean.getNameChinese()); // } } @NonNull @Override public HomeRecAdapter.MyRecylerViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View inflate; int num=13; if (goodsBeans.size()<num){ inflate = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_user_home_less, viewGroup, false); }else { inflate = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_user_home, viewGroup, false); } return new MyRecylerViewHolder(inflate); } @Override public void onBindViewHolder(@NonNull HomeRecAdapter.MyRecylerViewHolder viewHolder, final int i) { GoodsBean goodsBean = goodsBeans.get(i); Log.d("ttt ",goodsBean.getNameChinese()); String price = String.valueOf(goodsBean.getPrice()); int coin = goodsBean.getCoin(); viewHolder.ivSugar.setImageResource(goodsBean.getImgID()); // if (price.length()>=5){ viewHolder.llPreice.setVisibility(View.GONE); viewHolder.tvName1.setVisibility(View.VISIBLE); viewHolder.tvPrice1.setVisibility(View.VISIBLE); viewHolder.tvName1.setText(goodsBean.getNameId()); viewHolder.tvName1.setLines(1); TextViewCompat.setAutoSizeTextTypeWithDefaults(viewHolder.tvName1, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM); if (Global.isLocal){ if (Global.payCCType == 40){ viewHolder.tvPrice1.setText("" + price); }else{ viewHolder.tvPrice1.setText("" + coin); } viewHolder.ivCoinFuhao.setVisibility(View.VISIBLE); Log.d(TAG,""+Global.payCCType); } else{ viewHolder.tvPrice1.setText("¥" + price); viewHolder.ivCoinFuhao.setVisibility(View.GONE); } viewHolder.rlSugar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (itemListener!=null){ itemListener.onItemClickLintener(v, i); } } }); if (i == 16 || i == 17) { viewHolder.tvMini.setVisibility(View.VISIBLE); } } @Override public int getItemCount() { return goodsBeans.size(); } }
这个是recyclerview的复用导致的,最简单的就是取消item的复用,还有一种是用map记录和给view加tag。自己也在找一种好的解决方法,同问。
内容显示由谁控制呢?适配器吧。那你是不是要把适配器的代码贴上来呢?
这个是recyclerview的复用导致的,最简单的就是取消item的复用,还有一种是用map记录和给view加tag。自己也在找一种好的解决方法,同问。