本文已参与「新人创作礼」活动,一起开启掘金创作之路。 首先实现recycle列表:
- 效果图
随着Android L版本的发布,RecyclerView已经逐渐地取代了ListView,用来显示较多的数据集,RecyclerView相比ListView在性能上有了大幅度的提升,可以说RecyclerView是AbsListView的升级版本。RecyclerView自带了ViewHolder使用,与ListView缓存convertView不同的是,RecyclerView缓存的是ViewHolder,操作对象也是ViewHolder。虽然ListView也带有缓存convertView的功能,但是当使用ListView时,显示、缓存、回收、布局等都是耦合在一起的;而RecyclerView对其进行了解耦,操作更灵活,使得开发者可以更好的自定义各种各样的效果,另外RecyclerView假如了局部刷新。
RecycleView点击的 简单使用:
首先: RecyclerView没有像ListView那样直接已经提供了OnItemClick或者OnItemLongClick等事件回调接 口,所以需要自己来写一个;
- ==在自定义的Adapter中定义接口==
//定义接口
public interface OnItemClickListener{
void onClick(int position);
}
private OnItemClickListener listener;
public void setOnItemClickListener(OnItemClickListener listener){
this.listener=listener;
/**
* @描述 :根据下标判断颜色背景
*/
private int mPosition;
public int getmPosition() {
return mPosition;
}
public void setmPosition(int mPosition) {
this.mPosition = mPosition;
} }
- ==在onBindViewHolder中 实现接口==
@Override
public void onBindViewHolder(@NonNull Myviewholder holder, int position) {
//实现接口
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(listener!=null){
listener.onClick(position);
//刷新改变背景颜色
notifyDataSetChanged();
}
}
});
//如果下标和传回来的下标相等 那么确定是点击的条目 把背景设置一下颜色
if(position==getmPosition()){
holder.itemView.setBackgroundColor(Color.WHITE);
holder.tv_recle.setTextColor(Color.BLUE);
}else{
//否则 初始化字体颜色背景
holder.tv_recle.setTextColor(Color.BLACK);
}
}
- ==在onCreate() 中 调用接口==
adapter.setOnItemClickListener(new ShopRecycleAdapter.OnItemClickListener() {
@Override
public void onClick(int position) {
switch (position){
case 0:
adapter.setmPosition(position);
adapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "点击了第一个",Toast.LENGTH_SHORT).show();
break;
case 1:
adapter.setmPosition(position);
adapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "点击了第二个",Toast.LENGTH_SHORT).show();
break;
case 2:
adapter.setmPosition(position);
adapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "点击了第三个",Toast.LENGTH_SHORT).show();
break;
case 3:
adapter.setmPosition(position);
adapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "点击了第四个",Toast.LENGTH_SHORT).show();
break;
}
}
});
以上是整个点击item的流程 [^1]