100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > RecyclerView实现条目单选 条目多选 条目按压背景

RecyclerView实现条目单选 条目多选 条目按压背景

时间:2019-05-15 14:25:41

相关推荐

RecyclerView实现条目单选 条目多选 条目按压背景

RecyclerView实现条目单选、条目多选

效果

apk演示下载:1.z0./RecyclerViewSelector.apk

依赖

implementation 'com.android.support:recyclerview-v7:26.1.0'

1.点击选中效果(单选/多选)

* Created by agen on /3/9.*两行代码轻松添加点击选中效果(单选/多选)*1.记录按压点击的位置 是否等于 当前点击的位置* 2.1刷新当前点击item条目、下一个条目、上一个条目(单选)* 2.2刷新当前点击item条目(多选)

设置适配器Adapter

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

public int selectedPosition = -5; //默认一个参数

public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {MyViewHolder myViewHolder = (MyViewHolder) holder; String index = (String) mDatas.get(position); myViewHolder.textView.setText("index=" + index); //记录按压点击的位置 是否等于 当前点击的位置 ? if (selectedPosition == position) {myViewHolder.imageView.setVisibility(View.VISIBLE); } else {myViewHolder.imageView.setVisibility(View.INVISIBLE); }/**设置条目的点击事件*/ myViewHolder.itemView.setTag(myViewHolder); myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View view) {onItemClickListener.OnItemClick(view, (MyViewHolder) holder,holder.getAdapterPosition()); }});}

设置点击效果-单选

private void initData() {list = new ArrayList<>(); for (int i = 0; i < 8; i++) {list.add(i, "" + i); }myAdapter = new MyAdapter(this, list); myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {@Override public void OnItemClick(View view, MyAdapter.MyViewHolder holder, int position) {Toast.makeText(view.getContext(), "position=" + position, Toast.LENGTH_SHORT).show(); /**刷新当前点击item条目、下一个条目、上一个条目*/myAdapter.setSelectedPosition(position);//选择的position赋值给参数, int selectedPosition = myAdapter.getSelectedPosition(); Log.d(TAG, "selectedPosition=" + selectedPosition); myAdapter.notifyItemChanged(selectedPosition);//刷新当前点击item myAdapter.notifyItemChanged(selectedPosition + 1);//刷新当前点击item的下一个条目 if (selectedPosition >= 1) {myAdapter.notifyItemChanged(selectedPosition - 1);//刷新当前点击item上一个条目 }}}); recycler_view.setAdapter(myAdapter);}

设置点击效果-多选

if (null != myAdapter) {//两行代码轻松添加点击选中效果,实现条目的多选 /**刷新当前点击item条目*/ myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {@Override public void OnItemClick(View view, MyAdapter.MyViewHolder holder, int position) {Toast.makeText(view.getContext(), "position=" + position, Toast.LENGTH_SHORT).show(); myAdapter.setSelectedPosition(position);//选择的position赋值给参数, int selectedPosition = myAdapter.getSelectedPosition(); Log.d(TAG, "selectedPosition=" + selectedPosition); myAdapter.notifyItemChanged(selectedPosition);//刷新当前点击item }});}

为RecyclerView添加点击事件与效果

/*** Created by Administrator on /7/6 0006.*为RecyclerView添加点击事件与效果*(两行代码轻松添加点击选中效果)* 1在主题中获取RecyclerView控件的属性* 2使用按压图片selector选择器*/public class MyAdapterTwo extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item, parent, false); TypedValue typedValue = new TypedValue(); parent.getContext().getTheme().resolveAttribute(R.attr.selectableItemBackground, typedValue, true); //系统自带的条目选择效果 // view.setBackgroundResource(typedValue.resourceId); /**自定义条目按压效果state_pressed*/ view.setBackgroundResource(R.drawable.selector_shape_blue_gray); MyViewHolder myViewHolder = new MyViewHolder(view, mOnItemClickListener); return myViewHolder;}

。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。