解决RecyclerView中item包括EditText,RadioGroup复用的问题
来源:互联网 发布:mac和iphone铃声 编辑:程序博客网 时间:2024/06/07 06:03
在开发过程中,有这样一个录入数据的需求,如下图,item中既包括EditText,也包括RadioGroup,在EditText输入数据或者RadioGroup中选中条目,在RecyclerView滑动过程中会导致数据的错乱,废话不多说,有图有真相。
其中EditText也类似
解决后的效果:
解决方法:
先贴出数据的model
public class CheckItemModel { public String CheckTypeId; public String CheckTypeName; public boolean Flag;//正常异常表示,false:为正常异常,true为手动自动 public String isNormal;//正常异常 public String isAuto;//手动自动 public String exceptionInfo = "";//备注异常信息}
在onBindItemHolder中
@Override public void onBindItemHolder(SuperViewHolder holder, final int position) {// holder.setIsRecyclable(false); final CheckItemModel checkItemModel = mDataList.get(position); TextView mNameTextView = holder.getView(R.id.tv_item_name); RadioGroup mStatusRadioGroup = holder.getView(R.id.rg_status); RadioButton mNormalRadioButton = holder.getView(R.id.rb_normal); RadioButton mErrorRadioButton = holder.getView(R.id.rb_error); EditText mExceptionEditText = holder.getView(R.id.et_exception); TextWatcher watcher = (TextWatcher) mExceptionEditText.getTag(); if(watcher != null){ mExceptionEditText.removeTextChangedListener(watcher); } TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { checkItemModel.exceptionInfo = s.toString(); } }; mExceptionEditText.addTextChangedListener(textWatcher); //RadioGroup mStatusRadioGroup.setOnCheckedChangeListener(null); if(checkItemModel.Flag){//true为手动自动 mNormalRadioButton.setText("手动"); mErrorRadioButton.setText("自动"); if("自动".equals(checkItemModel.isAuto)){ mStatusRadioGroup.check(R.id.rb_error); }else if("手动".equals(checkItemModel.isAuto)){ mStatusRadioGroup.check(R.id.rb_normal); }else { mStatusRadioGroup.clearCheck(); } }else { mNormalRadioButton.setText("正常"); mErrorRadioButton.setText("异常"); if("正常".equals(checkItemModel.isNormal)){ mStatusRadioGroup.check(R.id.rb_normal); }else if("异常".equals(checkItemModel.isNormal)){ mStatusRadioGroup.check(R.id.rb_error); }else { mStatusRadioGroup.clearCheck(); } } mStatusRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { switch (checkedId) { case R.id.rb_normal://正常 手动 if (checkItemModel.Flag) { checkItemModel.isAuto = "手动"; } else { checkItemModel.isNormal = "正常"; } break; case R.id.rb_error://异常 自动 if (checkItemModel.Flag) { checkItemModel.isAuto = "自动"; } else { checkItemModel.isNormal = "异常"; } break; } } }); Log.e("399","position: " + position + " isNormal: " + checkItemModel.isNormal + " CheckTypeName: " + checkItemModel.CheckTypeName + " exceptionInfo: " + checkItemModel.exceptionInfo); mNameTextView.setText(checkItemModel.CheckTypeName); mExceptionEditText.setText(checkItemModel.exceptionInfo); mExceptionEditText.setTag(textWatcher); }
阅读全文
0 0
- 解决RecyclerView中item包括EditText,RadioGroup复用的问题
- RecyclerView中item的EditText的监听
- 水平RecyclerView中Item中含有EditText问题
- Recyclerview item中有EditText使用刷新遇到的坑!!!!!
- RecyclerView.Adapter的某个item中EditText的输入后所有列表中Editetext全部被修改的问题
- RecyclerView中item无法充满的问题
- RecyclerView中放入EditText出现的问题
- RecyclerView + EditText item 复用造成数据混乱
- Android RecyclerView 中多Item的EditText监听 和 EditText焦点混乱的解决方法
- RecyclerView中解决item点击持久变色问题
- 自定义AlertDialog对话框,包括解决对话框中edittext不能输入的问题
- RecyclerView的Item复用出现问题导致排版混乱
- 解决RecyclerView删除Item导致位置错乱的问题
- 【Android】- RecyclerView删除时,解决Item位置错乱的问题
- 解决ScrollView嵌套RecyclerView时item显示不全的问题
- 解决ScrollView嵌套RecyclerView出现item显示不全的问题
- RecyclerView 多布局,Item中使用EditText刷新问题扫坑
- 当ScrollView包括EditText和RecyclerView报错解决
- Django 自定义manage.py 命令
- 欢迎使用CSDN-markdown编辑器
- 启动Node.js异步处理的情况
- Yii2 多域名跨域同步登录退出
- [java Annotation] 注解基本概念
- 解决RecyclerView中item包括EditText,RadioGroup复用的问题
- Spring定时任务的几种实现
- 用自定义Fragment做布局引用的时候报错
- 湘潭2017 ccpc中南地区邀请赛 Determinant 高斯约当求逆矩阵
- java克隆
- sas 学习笔记(1)
- js node.js 输出大量数字到一个文本
- 浅析@Deprecated
- 在IDEA中实战Git