android RecyclerView checkbox复用解决
16lz
2022-04-23
先看复用后的Adpter代码,这时候checkbox是一直在复用的;
package com.example.demo;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.CheckBox;import androidx.annotation.NonNull;import androidx.recyclerview.widget.RecyclerView;import java.util.List;import javax.security.auth.callback.Callback;public class MyAdpter extends RecyclerView.Adapter { private List list; private Context context; public MyAdpter(List list, Context context) { this.list = list; this.context = context; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View inflate = LayoutInflater.from(context).inflate(R.layout.item_demo, parent, false); ViewHolder viewHolder=new ViewHolder(inflate); return viewHolder; } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { holder.checkBox.setText(list.get(position)+""); } @Override public int getItemCount() { return list.size(); } class ViewHolder extends RecyclerView.ViewHolder{ CheckBox checkBox; public ViewHolder(@NonNull View itemView) { super(itemView); checkBox=itemView.findViewById(R.id.cb_man); } }}
效果图为:
当选择第一屏幕的第一个的时候,由于一屏幕最大显示的只有这么多,所以当第9个的时候是第二屏幕,第9复用了第1个的控件,解决办法为:
@Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { holder.checkBox.setText(list.get(position)+""); holder.setIsRecyclable(false);//强制关闭复用 }
这时候就不会复用第一屏幕的了,不过数据量大的时候内存有点大,数据量大的时候配合使用分页,计算每屏的最大个数;
更多相关文章
- Android(安卓)实现 zlib压缩与解压
- android利用ViewPager做的介绍软件功能demo
- android圆角dialog,并限制宽度和高度
- android传感器类别
- 短视频带货源码模仿QQ 测滑菜单
- Android(安卓)app 判断是手机还是平板
- android 获取屏幕大小
- android 屏幕截屏
- mybatisplus的坑 insert标签insert into select无参数问题的解决