[开发日记-SHUCheck]RecyclerView使用记录
来源:互联网 发布:java生成验证码工具类 编辑:程序博客网 时间:2024/06/09 18:52
需求:
- ListView滑动效果
控件包涵:TextView、CheckBox
实现:
mainView.java
public class MainView extends AppCompatActivity { private RecyclerView root; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); root = new RecyclerView(this); setContentView(root); root.setLayoutManager(new LinearLayoutManager(this)); root.setAdapter(new AdapterNameList()); }
ViewHolder
public class ViewHolder extends RecyclerView.ViewHolder { private View myView; //Widgets集合 public TextView textViewName; public CheckBox checkBoxOk; public CheckBox checkBoxNotOk; public CheckBox checkBoxLeave; public boolean checkBoxChange = false; public ViewHolder(View myView) { super(myView); //控件实例化 textViewName = (TextView) myView.findViewById(R.id.textViewName); checkBoxOk = (CheckBox) myView.findViewById(R.id.checkboxOk); checkBoxNotOk = (CheckBox) myView.findViewById(R.id.checkboxNotOkOk); checkBoxLeave = (CheckBox) myView.findViewById(R.id.checkboxLeave); }}
AdapterNameList
public class AdapterNameList extends RecyclerView.Adapter implements CompoundButton.OnCheckedChangeListener { //存放ViewHolde List<ViewHolder> arrayViewHolder = new ArrayList<ViewHolder>(); @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //使用资源文件自定义列表 return new ViewHolder(LayoutInflater.from(parent.getContext()) .inflate(R.layout.activity_main_name_list_view, null)); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //对布局控件进行操作 ViewHolder viewHolder = (ViewHolder) holder; if (viewHolder.checkBoxChange != true){ viewHolder.textViewName.setText(String.format("Name" + position)); viewHolder.checkBoxOk.setId(position); viewHolder.checkBoxOk.setChecked(false); viewHolder.checkBoxOk.setOnCheckedChangeListener(this); viewHolder.checkBoxNotOk.setId(position); viewHolder.checkBoxNotOk.setChecked(false); viewHolder.checkBoxNotOk.setOnCheckedChangeListener(this); viewHolder.checkBoxLeave.setId(position); viewHolder.checkBoxLeave.setChecked(false); viewHolder.checkBoxLeave.setOnCheckedChangeListener(this); arrayViewHolder.add(viewHolder); } } @Override public int getItemCount() { //渲染控件的个数 return 50; } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //判断哪一个复选框被选中 arrayViewHolder.get(buttonView.getId()).checkBoxChange = true; if (buttonView.getText().equals("签到")) { Log.w("TEST", String.format("buttonView ID = " + buttonView.getId())); } }}
步骤分析以后写,直接说结果
本想通过XML自定义一个列表项,然后就用RecyclerView来实现,但是发现使用RecycleerView时Item被回收后重新填充进列表时,CheckBox还是属于被回收的Item,也就是说第一个Item的CheckBox被选中后,第N个Item(第一个回收后重新填充进列表)的CheckBox同样是被选中的。
0 0
- [开发日记-SHUCheck]RecyclerView使用记录
- RecyclerView的使用记录
- 日记记录工具使用
- RecyclerView的使用心得记录
- Android开发--RecyclerView使用
- 使用springMVC AOP实现日记记录
- Android开发模板------RecyclerView的使用
- Android开发之RecyclerView的使用
- Android开发中使用RecyclerView注意事项
- 【Android开发】RecyclerView的基本使用
- Android 开发之RecyclerView的使用
- eclipse开发使用recyclerview步骤介绍
- 树莓派开发日记,2015,5,18,问题记录
- 前端开发日记之a的使用
- 前端开发日记之选择器的使用
- 日记-记录我的日记
- 编程日记:boost 库使用记录之文件系统
- RecyclerView使用
- mysql 存储过程
- 快速排序算法
- ios 创建一个新的window 覆盖当前的window
- codeforces#336 div2 A,B
- 为什么 API 监控对于任何业务来说都重要?
- [开发日记-SHUCheck]RecyclerView使用记录
- 课程设计-学生成绩系统
- 冒泡排序改进版--添加标示排序法
- mysql has gone away的原因
- 【Linux】ubuntu下安装MySQL、Redis
- 数据结构C语言版进制转换
- Orientation - 2
- XJ001班2015年12月24日课堂总结与作业
- 慕课网-Java入门第二季实战练习-答答租车系统