RecyclerView本身和listview一样,但是RecyclerView没有Itme的点击事件,所以要自己去实现。
1.要使用RecyclerView首先要添加RecyclerView的相关依赖
dependencies { compile 'com.android.support:recyclerview-v7:21.0.0' }
别忘了更新一下 这样就可以在布局文件里使用了 这里就不演示了
2.在java代码里加载控件创建Adapter 实现3个方法,这里RecyclerView继承的是RecyclerView.Adapter和listView不一样
public class WDFD_WWC_Adapter extends RecyclerView.Adapter<WDFD_WWC_Adapter.ViewHolder> { private Activity activity; public WDFD_WWC_Adapter(Activity activity) { this.activity = activity; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(activity).inflate(R.layout.wdfd_wwc_itme,parent,false); ViewHolder myViewHolder = new ViewHolder(view); return myViewHolder; } @Override public void onBindViewHolder(ViewHolder holder, final int position) { } @Override public int getItemCount() { return 8; } public static class ViewHolder extends RecyclerView.ViewHolder { public ViewHolder(View itemView) { super(itemView); } } }
4.在主页面去加载并且把Adapter加载给RecyclerView
mWwcRv = (RecyclerView) view.findViewById(R.id.wdfd_wwc_rv); wdfd_wwc_adapter = new WDFD_WWC_Adapter(mActivity); mWwcRv.setAdapter(wdfd_wwc_adapter);
这句是设置RecyclerView加载的样式的 ,这个是垂直的 mWwcRv.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL,false));
5.因为RecyclerView 没有给我们提供Itme的点击事件所以我们要自己去写,在Adapter里面实现
首先初始化一个变量
private OnItemClickListener mOnItemClickListener;
然后写一个接口里面实现两个方法一个点击,一个长按
public interface OnItemClickListener{ void onClick( int position); void onLongClick( int position); }
然后写个个对外的set方法方便使用的时候调用
public void setOnItemClickListener(OnItemClickListener onItemClickListener ){ this. mOnItemClickListener=onItemClickListener; }接着在 onBindViewHolder方法里面判断一下不为空就实现点击事件
@Override public void onBindViewHolder(ViewHolder holder, final int position) { if( mOnItemClickListener!= null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOnItemClickListener.onClick(position); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { mOnItemClickListener.onLongClick(position); return false; } }); }
最后在主页里实现就行了
wdfd_wwc_adapter.setOnItemClickListener(new WDFD_WWC_Adapter.OnItemClickListener() {、
//这个是点击事件 @Override public void onClick(int position) { } //这个是长按事件 @Override public void onLongClick(int position) { } });
这样一个常用的RecyclerView 就完成了,RecyclerView 相比 ListView 在基础使用上的区别主要有如下几点:
ViewHolder 的编写规范化了
RecyclerView 没有提供Itme的点击事件需要自己使用
RecyclerView 需要多出一步 LayoutManager 的设置工作