Android RecycleView 实现单选列表 并解决View复用导致错乱问题
来源:互联网 发布:js表格分页插件 编辑:程序博客网 时间:2024/06/06 00:08
1.缓存机制
离屏的ItemView即被回收至缓存,入屏的ItemView则会优先从缓存中获取
因此实现单选的过程中会出现多选的情况或内容错乱,原因是取得是之前的缓存的item布局。
2.解决办法
使用
if else
做不同处理不同类型item 重写
getItemViewType()
@Override public int getItemViewType(int position){ return mDatas.get(position).isTitle(); } //填充onCreateViewHolder方法返回的holder中的控件 @Override public void onBindViewHolder(MyViewHolder holder, final int position) { switch (getItemViewType(position)){ case 0: holder.tv.setText( mDatas.get(position).getWork()); if(mDatas.get(position).isSelected()) { holder.layout.setBackgroundColor(mContext.getResources().getColor(R.color.standard)); } else { holder.layout.setBackgroundColor(mContext.getResources().getColor(R.color.white)); } holder.layout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //实现单选方法二: notifyItemChanged() 定向刷新两个视图 //如果勾选的不是已经勾选状态的Item if (mSelectedPos!=position){ //先取消上个item的勾选状态 if(mSelectedPos!=-1) { mDatas.get(mSelectedPos).setSelected(false); notifyItemChanged(mSelectedPos); } //设置新Item的勾选状态 mSelectedPos = position; mDatas.get(mSelectedPos).setSelected(true); notifyItemChanged(mSelectedPos); } } }); break; case 1: holder.tv.setText( mDatas.get(position).getWork()); break; } } //重写onCreateViewHolder方法,返回一个自定义的ViewHolder @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder=null; View view=null; switch(viewType){ case 0: view = inflater.inflate(R.layout.item_selectwork_list,parent, false); holder= new MyViewHolder(view); break; case 1: view = inflater.inflate(R.layout.item_selectwork_list2,parent, false); holder= new MyViewHolder(view); break; } return holder; }3.DEMO下载
demo1demo2
0 0
- Android RecycleView 实现单选列表 并解决View复用导致错乱问题
- 解决RecycleView的holder复用而导致checkbox乱选的问题
- Android 解决系统大号字体导致布局显示错乱问题
- RecycleView列表中下拉刷新图片错乱的问题
- android recycleview实现checked单选
- 解决easyui动态隐藏或显示列导致列表排版错乱的问题
- android RecycleView解决多线程情况下图片错乱问题与OOM问题(原生代码,无插件)
- Checkbox复用导致错乱
- listview复用导致内容错乱的问题
- ListView复用导致图片错乱及闪烁问题
- Android中ListView复用导致布局错乱的解决方案
- 分页列表td中包含有<标签导致页面显示错乱问题,使用jstl <c:out>标签秒解决
- android开发 recycleview的item中加入checkbox实现批量选择条目(复用时防止checkbox勾选状态错乱)
- recyclerView列表使用Timer定时器复用错乱的问题
- Android 实现单选列表
- 解决RecyclerView删除Item导致位置错乱的问题
- 记录RecycleView的数据错乱BUG解决
- RecylerView配合ChekBox实现单选,解决了因为复用导致单选框混乱现象
- ACM1008玛雅历 剖析
- ZJOI2017游记(雾)
- transform-style: preserve-3d和 perspective透视
- JZOJ 3.25 1419——【汕头市选2012初中组】排序(sort)
- HDU 4405 Aeroplane chess (简单期望)
- Android RecycleView 实现单选列表 并解决View复用导致错乱问题
- sql 基本语法整理
- ScrollView属性总结
- 如何编辑验证码
- LeetCode Algorithms 8. String to Integer (atoi) 题解
- APP界面设计流程和APP产品设计流程知识汇总
- BMS工作
- PHP的echo 和 print 区别:
- unity3d 重力加速度传感器控制摄像头