RecyclerView遇到的问题
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遇到的问题相关推荐
- Android RecyclerView(和SnapHelper) 实现类似ViewPager的效果
实现的效果图如下 2 行代码就实现了,其余的都是recyclerview 的代码 如果不显示一次可以滑动多个的话可以使用LinearSnapHelper 具体代码如下(实际就2行代码呢) recycl ...
- android RecyclerView 添加可拖动的滚动条
实现的效果图如下,为了效果这里我设置的宽了一些,实际根据需求修改即可 先说几个属性: android:scrollbars" 一般都是垂直的滚动条设置vertical android:scr ...
- RecyclerView 判断滑动到顶部和底部
可以使用系统提供的 canScrollVertically 方法来判断 具体如下 recycler_view.addOnScrollListener(new RecyclerView.OnScroll ...
- RecyclerView 刷新的时候出现阴影的处理方法
这个阴影是RecyclerView 的问题引起的 处理方法如下 recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER); 这样阴影就消失了.
- RecyclerView 删除Item 以及删除整个RecyclerView
学而时习之,温故而知新. 今天用到了,居然忘记了,好尴尬,这里深夜了也在记录下, 1 删除整个RecyclerView hisList.clear();hisAdapter.notifyDataSet ...
- 2个RecyclerView 联动
看下效果图, 底部在给出demo地址 如果想实现类似拼多多的商品联动也是可以的,修改方法即可 下面看下实现方法 几个参数需要知道 findFirstVisibleItemPosition 显示界面第一 ...
- RecyclerView 滑动显示返回按钮,点击返回到顶部
底部有demo 地址*************************** 需要提前知道一些只是 RecyclerView.SCROLL_STATE_IDLE 是RecyclerView 滑动停止状态 ...
- RecyclerView smoothScrollToPosition 和 scrollToPosition 的区别
smoothScrollToPosition 是平衡的滑动 , 假如现在返回首页 recyclerView.smoothScrollToPosition(0); 看下效果图 scrollToPosi ...
- RecyclerView 的findFirstVisibleItemPosition()与findLastVisibleItemPosition()
findFirstVisibleItemPosition 显示界面的第一个位置 findLastVisibleItemPosition 显示界面最后一个位置 画一个图来说下把 一个横向的Recycle ...
- Binary XML file line #8: Error inflating class android.support.v7.widget.RecyclerView
今天创建了一个 demo ,然后就是复制RecyclerView 过去, 到最后完成运行的时候发现 系统奔溃了, 然后 提示 Binary XML file line #8: Error inflat ...
最新文章
- Ascend Pytorch算子适配层开发
- 从库备份中恢复一张表
- beyond compare比较工具设置
- “物联网+云平台”的实验室管理方案,瞄准的是生物医药和化工行业
- 田野中科院计算机网络信息中心,中国科学院计算机网络信息中心硕士生导师田野...
- java 矩阵转置_图解利用Java实现数组转置
- 华为天才少年一人打造自动驾驶!
- cad页面布局快捷键_炸裂“图纸集”功能、高手都在偷偷用的CAD图纸管理神器
- MySql数据库导出完整版(导出数据库,导出表,导出数据库结构)
- VS 中PageLayout 属性设置
- system.out输出到文件上
- 古文物青铜器VR高清模型H5三维可视化在线展示
- 在HBuilder上打开PHP文件
- 【参赛作品94】21天openGauss学习之旅
- android、ios、windows等平台回声消除的解决方案
- Hadoop实战第2版 - 电子书下载(高清版PDF格式+EPUB格式)
- 如何计算根号之牛顿迭代法
- (4.3)进程管理之线程
- java科技说明文范文800_说明文范文:生活因成功而精彩
- Jupyter Notebook误登出怎么办?