Android RecyclerView初探

今天研究了一下RecyclerView,RecyclerView比ListView的效率更高而且可以横向滑动,所以现在许多Android项目更倾向与使用RecyclerView。

下面是一个RecyclerView的demo

 

RecyclerView的库导入

compile 'com.android.support:recyclerview-v7:24.2.1'

 

首先先得到控件和设置布局

rv = (RecyclerView) findViewById(R.id.rv);
rv.setLayoutManager(new LinearLayoutManager(context));

然后输入测试数据

list = new ArrayList<String>();
for (int i = 0; i < 30; i++) {
list.add("测试记录" + i);
}
 

设置Adapter,Adapter是自己定义的一个适配器可以放一个图片和文本

 

设置点击事件,RecyclerView自己没有点击事件必须使用回调的方式在里面自己定义

 

 

OnCreateViewHolder用来给rv创建缓存的,在这里对每一个view进行监听view.setOnClickListener(this)


onBindViewHolder给缓存控件设置数据,在里面设置样式中的数据

public void onBindViewHolder(MyAdapter.MyHolder holder, int position) {
String item = list.get(position);
holder.textView.setText(item);
holder.icon.setImageResource(R.mipmap.ic_launcher);
holder.itemView.setTag(position);
}
getItemCount

getItemCount获取记录数

public int getItemCount() {
return list.size();
}

RecyclerView必须自己定义一个ViewHolder用来得到样式中的控键

public class MyHolder extends RecyclerView.ViewHolder {
public ImageView icon;
public TextView textView;

//实现的方法
public MyHolder(View itemView) {
super(itemView);
icon = (ImageView) itemView.findViewById(R.id.item_iv_icon);
textView = (TextView) itemView.findViewById(R.id.item_tv_title);
}
}

下面是实现点击事件的方法


//点击事件设置
@Override
public void onClick(View view) {
if(itemClickListener!=null){
itemClickListener.onItemClick((Integer) view.getTag());
}
}
//接口设置
public void setItemClickListener(OnItemClickListener itemClickListener){
this.itemClickListener = itemClickListener;
}

//自定义点击接口
public interface OnItemClickListener {
void onItemClick(int tag);
}

可以得到效果:

 

 

demo github地址:https://github.com/tempest1/RecyclerTest

 

posted @ 2018-03-20 21:14  坎坷人生0  阅读(138)  评论(0编辑  收藏  举报