1.RecyclerView中的Item中使用CheckBox出现的问题

我们在滑动的时候,其他行的checkbox会莫名地调用setOnCheckedChangeListener,这样我们在滑动的时候,会发现其他行的checkbox会很奇怪勾上,然后滑出界面,又消失了,这个时候,我们需要在RecyclerView.Adapter的onBindViewHolder方法中zholder.cb.setOnCheckedChangeListener(null);将checkbox的监听取消掉,这样就能保证只有是手动切换状态才能发生setOnCheckedChangeListener内部的方法。
具体实现可以看:

    (InvoiceOrderViewHolder holderposition) {InvoiceOrderBean bean = mDatas.get(position);holder.tvTime.setText(String.format(.getString(R.string.)bean.getCreateTime()));holder.cb.setOnCheckedChangeListener(null);holder.tvNum.setText(String.format(bean.getTotalNum()));holder.tvClick.setOnClickListener(View.OnClickListener() {onClick (View v) {Intent intent = Intent(PurchaseOrderDetailActivity.);intent.putExtra(PurchaseOrderDetailActivity.String.valueOf(.getOrderId()));v.getContext().startActivity(intent)}});holder.cb.setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener() {(CompoundButton buttonViewisChecked) {buttonViewisChecked.setSelect(isChecked)}})}

2.RecyclerView中的Item中有EditText,同时我们需要对EditText增加输入监听的情况出现的问题

我们在滑动的时候,其他行的EditText会因为recyclerView的复用View调用addTextChangedListener,这个时候,我们的position不能用,onBindViewHolder的position来获取list中的元素,因为此时的position是不固定的,也就是说list.get(position),这个拿到的object也是不固定的,所以我们需要在addTextChangedListener的afterTextChange方法中重新通过AccountManageBean temp = datas.get(holder.getAdapterPosition());这样能保存temp拿到的值是跟当前的显示的holder是对应的,不然会出现数据紊乱的情况。onBindeViewHolder方法中的实现体:
具体实现可以看:

        AccountManageBean bean = mDatas.get(position);holder.tvJob.setText(bean.getJobName());holder.tvJob.setTag(bean.getJobCode());holder.etName.addTextChangedListener(SimpleTextWatcher() {(Editable s) {AccountManageBean temp = mDatas.get(.getAdapterPosition())if(!TextUtils.equals(temp.getName()s.toString())) {temp.setChange(true);temp.setName(s.toString())}}})}

3.其它方案

在你用了上面的方案,都感觉达不到你的要求,可以屡试不爽的方案,就是,我们在adapter中外部定义一个private SparseBooleanArrayselectedItems; 来进行记录,我们当前点击的是哪一行,这样我们下次滑动的时候,就根据这个来判断,为true的就是你想影响的那一行,其他行的默认false,就不执行就可以了,都不要执行listener的代码就可以了。

4.recyclerView的嵌套问题

在recyclerview23.2.1之前的话,如果我们在ScrollView中嵌套recyclerView,我们需要写LinearLayoutManagerUnScrollable,重写onMeasure方法,然后就计算子view的高度,然后去重新设置recyclerView的高度,但是这个有个问题,就是当recyclerView的高度会动态改变高度,比如我在某个地址列表界面,点击列表上按钮跳转到别的界面,然后选择了新的很长的地址,然后回来到列表界面,刷新,然后recyclerview就显示不全了,超过一行的文字就显示不出来,需要滑动,选择23.2.1以后的版本修复了这个bug,只需要在设置LinearLayoutManager的时候,增加下面的代码:

    LinearLayoutManager manager = new LinearLayoutManager(this);manager.setAutoMeasureEnabled(true)

RecyclerView遇到的问题相关推荐

  1. Android RecyclerView(和SnapHelper) 实现类似ViewPager的效果

    实现的效果图如下 2 行代码就实现了,其余的都是recyclerview 的代码 如果不显示一次可以滑动多个的话可以使用LinearSnapHelper 具体代码如下(实际就2行代码呢) recycl ...

  2. android RecyclerView 添加可拖动的滚动条

    实现的效果图如下,为了效果这里我设置的宽了一些,实际根据需求修改即可 先说几个属性: android:scrollbars" 一般都是垂直的滚动条设置vertical android:scr ...

  3. RecyclerView 判断滑动到顶部和底部

    可以使用系统提供的 canScrollVertically 方法来判断 具体如下 recycler_view.addOnScrollListener(new RecyclerView.OnScroll ...

  4. RecyclerView 刷新的时候出现阴影的处理方法

    这个阴影是RecyclerView 的问题引起的 处理方法如下 recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER); 这样阴影就消失了.

  5. RecyclerView 删除Item 以及删除整个RecyclerView

    学而时习之,温故而知新. 今天用到了,居然忘记了,好尴尬,这里深夜了也在记录下, 1 删除整个RecyclerView hisList.clear();hisAdapter.notifyDataSet ...

  6. 2个RecyclerView 联动

    看下效果图, 底部在给出demo地址 如果想实现类似拼多多的商品联动也是可以的,修改方法即可 下面看下实现方法 几个参数需要知道 findFirstVisibleItemPosition 显示界面第一 ...

  7. RecyclerView 滑动显示返回按钮,点击返回到顶部

    底部有demo 地址*************************** 需要提前知道一些只是 RecyclerView.SCROLL_STATE_IDLE 是RecyclerView 滑动停止状态 ...

  8. RecyclerView smoothScrollToPosition 和 scrollToPosition 的区别

    smoothScrollToPosition  是平衡的滑动 , 假如现在返回首页 recyclerView.smoothScrollToPosition(0); 看下效果图 scrollToPosi ...

  9. RecyclerView 的findFirstVisibleItemPosition()与findLastVisibleItemPosition()

    findFirstVisibleItemPosition 显示界面的第一个位置 findLastVisibleItemPosition 显示界面最后一个位置 画一个图来说下把 一个横向的Recycle ...

  10. Binary XML file line #8: Error inflating class android.support.v7.widget.RecyclerView

    今天创建了一个 demo ,然后就是复制RecyclerView 过去, 到最后完成运行的时候发现 系统奔溃了, 然后 提示 Binary XML file line #8: Error inflat ...

最新文章

  1. Ascend Pytorch算子适配层开发
  2. 从库备份中恢复一张表
  3. beyond compare比较工具设置
  4. “物联网+云平台”的实验室管理方案,瞄准的是生物医药和化工行业
  5. 田野中科院计算机网络信息中心,中国科学院计算机网络信息中心硕士生导师田野...
  6. java 矩阵转置_图解利用Java实现数组转置
  7. 华为天才少年一人打造自动驾驶!
  8. cad页面布局快捷键_炸裂“图纸集”功能、高手都在偷偷用的CAD图纸管理神器
  9. MySql数据库导出完整版(导出数据库,导出表,导出数据库结构)
  10. VS 中PageLayout 属性设置
  11. system.out输出到文件上
  12. 古文物青铜器VR高清模型H5三维可视化在线展示
  13. 在HBuilder上打开PHP文件
  14. 【参赛作品94】21天openGauss学习之旅
  15. android、ios、windows等平台回声消除的解决方案
  16. Hadoop实战第2版 - 电子书下载(高清版PDF格式+EPUB格式)
  17. 如何计算根号之牛顿迭代法
  18. (4.3)进程管理之线程
  19. java科技说明文范文800_说明文范文:生活因成功而精彩
  20. Jupyter Notebook误登出怎么办?

热门文章

  1. live555从RTSP服务器读取数据到使用接收到的数据流程分析
  2. RabbitMQ学习总结(6)——消息的路由分发机制详解
  3. Redis单机版本框架
  4. 不要过高估计SDN的能力,也善于发现SDN技术的缺陷之美
  5. 实战Nagios+Ganglia发送警告信息,短信,微信等
  6. 深入理解CSS变形transform(3d)
  7. three20 阅读到的代码
  8. 顽强的病毒,如何处理
  9. piaoxue/feixue驱动程序分析
  10. Nginx 从入门到放弃(二)