RecyclerView 点击位置错乱问题
来源:互联网 发布:index=0 c语言 编辑:程序博客网 时间:2024/06/05 15:46
错误分析
RecyclerView 有一堆数据,然后点击添加,其中一个pos位置的数据变成蓝色,然后下滑位置会发生错乱,其中的原理,其实是和listview错误是类似的。
如图:。点击添加则字变成蓝色,点击取消则变成黑色。未处理之前其实上滑下滑会出现蓝字错乱问题。
问题解决
在RecyclerView 里的适配器中解决以下的问题。所有代码都在RecyclerView 的适配器中设置。
1.先设一个List 将点击按钮的位置保持下来。
private List<Integer> listPos= new ArrayList<>();2.然后onBindViewHolder里将所有的数据都设置为黑色,并将listPos中保存的位置数据变成蓝色holder.textView.setTextColor(context.getColor(R.color.black)); ref(holder,position);listPos的添加和取数据的方法分别为:listAdd 和ref:3.在添加和取消按钮中,将分别将位置add或remove,listPos中的数据private void listAdd(int pos){ int isPos = 0; for(int i = 0;i< listPos.size(); i++){ if(listPos.get(i) == pos){ isPos = 1; } } if(isPos == 0){ listPos.add(pos); } } private void ref(ViewHolder holder, int position){ for(int i = 0;i< listPos.size(); i++){ if(listPos.size() != 0) { if (listPos.get(i) == position) { holder.textView.setTextColor(context.getColor(R.color.blue)); holder.add.setVisibility(View.GONE); holder.candle.setVisibility(View.VISIBLE); } } } }
add:
listAdd(position); ref(holder, position);remove:
for(int j = 0;j< listPos.size(); j++){ if(listPos.get(j) == position){ LogInfo.log(listPos + ""); listPos.remove(j); } }holder.textView.setTextColor(context.getColor(R.color.black));总结
Ok了。大致步骤就是这样,总的来说就是先将所有数据变成黑色,然后再循环保存的数据位置,将其变成蓝色。并且点击添加和取消,添加或删除listPos中保存的位置。
0 0
- RecyclerView 点击位置错乱问题
- RecyclerView删除Item导致位置错乱问题
- 解决RecyclerView删除Item导致位置错乱的问题
- 【Android】- RecyclerView删除时,解决Item位置错乱的问题
- 多行多列位置错乱问题
- RecyclerView EditText 数据错乱问题
- 解决RecyclerView删除Item导致位置错乱的问题 以及删除最后一个出错的问题
- RecyclerView与CheckBox结合使用错乱问题
- Recyclerview抢占焦点,导致切换fragment后位置错乱
- 解决:ListView+CheckBox 点击错乱问题
- recyclerview 的item被remove后position的错乱问题
- RecyclerView加载网络图片防止图片错乱问题
- recyclerView列表使用Timer定时器复用错乱的问题
- Recyclerview 删除/插入item时,导致position错乱问题
- RecyclerView复用的一些问题(Checkbox错乱)
- RecyclerView使用notifyItemRemoved错乱
- 利用IText生成PDF时图片,位置错乱的问题
- List加入headView后点击position错乱问题
- Java Thread线程
- Python Selenium 启动新版本Firefox失败问题解决方案
- Geometric_tools_Engine “unable to create WIC imaging factory“” 问题解决
- 【C/C++】关于修饰函数关键字 __declspec,__cdecl,__stdcall,__declspec
- NYOJ 43 24 Point game
- RecyclerView 点击位置错乱问题
- 简单记录 gitlab 本地安装过程
- ===如何测试直播软件===
- 我的生活(-)-童年回顾
- jvm参数(调优)+jvm内存的年轻代/老年代/持久代
- Android Data Binding(转)
- xcode 打包选择release
- 我的文章分类
- RK3399代码同步问题