您的位置:首页 > 其它

个人总结之RecyclerView

2016-02-29 00:00 375 查看
RecycleView是V7包下的,可以说是ListView的升级版,因为ListView是不支持横向滑动,而RecycleView既支持横向也支持纵向滑动,使用很方便,但是有一点坑爹的就是没有条目的点击事件,需要我们自己来写

首先Activity的布局如下:



Item的布局我只是用一个简单的TextView来写的,所以就不传图了;

然后在Activity中的onCreat方法中,获取到RecyclerView控件,然后设定Layout管理器

RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.rec);



当然这里的setOrientation也可以设置为horizontal的,这样就是横向的

MyAdaper就是适配器,他要继承的是RecyclerView.Adaper,主要重写里面的onCreatViewHolder(),onBindViewHolder(),getItemCount()这三个方法,

onCreatViewHolder()就是创建ViewHolder

onBindViewHolder()就是绑定ViewHolder,和数据绑定

getItemCount()就是获取总的条目数

private class MyAdapter extends RecyclerView.Adapter {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.item, null);
Holder holder = new Holder(view);
return holder;
}

@Override
public void onBindViewHolder( RecyclerView.ViewHolder holder, final int position) {
final Holder h = (Holder) holder;
h.setData(position);
}

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

class Holder extends RecyclerView.ViewHolder {
TextView mtv;

public Holder(View view) {
super(view);
mtv = (TextView) view.findViewById(R.id.tv);
}

public void setData(int position) {
mtv.setText(list.get(position).getName());
}
}


这样就可以了,但是有一点就是item没有条目点击事件,如果想要用的话,我们只能自己来写个接口了,因为我的适配器是写在Activity中的,也就是和OnCreat()在一个类中,所以如下:

首先在全局中写个接口

public interface  onItemClickListener{
void onItemClick(View vi,int position);
}


然后在适配器MyAdapter中

private onItemClickListener mOnItem;

public void onItemClickListener(onItemClickListener mOnItemClickListener){
this.mOnItem = mOnItemClickListener;
}

然后在onBindViewHolder()方法

@Override
public void onBindViewHolder( RecyclerView.ViewHolder holder, final int position) {
final Holder h = (Holder) holder;
h.setData(position);

if(mOnItem != null){
h.mtv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnItem.onItemClick(h.mtv,position);
}
});
}
}


这就可以了,用的话在new 出适配器的时候设置点击事件

MyAdapter myAdapter = new MyAdapter();
myAdapter.onItemClickListener(new onItemClickListener() {
@Override
public void onItemClick(View vi, int position) {
Toast.makeText(Priactise.this, "这是" + position, Toast.LENGTH_SHORT).show();
}
});
mRecycle.setAdapter(myAdapter);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: