Android RecycleView 实现单选列表 并解决View复用导致错乱问题
2017-03-25 14:27
561 查看
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
相关文章推荐
- Android RecycleView 里面有按钮点击 复用错位的问题解决
- android RecycleView解决多线程情况下图片错乱问题与OOM问题(原生代码,无插件)
- 解决RecyclerView加载图片时复用itemview导致的图片数量错乱问题
- 解决RecycleView的holder复用而导致checkbox乱选的问题
- Android 解决RecyclerView删除Item导致位置错乱的问题
- android开发 recycleview的item中加入checkbox实现批量选择条目(复用时防止checkbox勾选状态错乱)
- Android自定义控件:imageview重写onMeasure方法实现图片按指定比例显示,拉伸永不变形,解决屏幕适配问题
- 解决Android在listview添加checkbox实现单选多选操作问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- Android 中 WebView 与 js 简单交互实现图文混排效果,解决图片自适应屏幕与查看大图问题
- android webview ZoomButtonsController 导致android.view.WindowLeaked 问题彻底解决
- android webview 点击页面输入框导致页面变大问题的解决
- Android:Adapter中设置多种type的item的LayoutParams导致的convertView复用异常的问题
- RecycleView的Item数据出现随机错乱重复问题解决
- Android编程中TextView宽度过大导致Drawable无法居中问题解决方法
- Android 解决系统大号字体导致布局显示错乱问题
- android webview ZoomButtonsController 导致android.view.WindowLeaked 问题彻底解决
- 完美解决Android在listview添加checkbox实现单选多选操作问题