1)RecyclerView是什么?
是一种新的视图组,可完全代替ListView和GridView,可以为任何基于适配器的视图提供相似的渲染方式,在有限的窗口中展示大量的数据集;高度解耦、异常灵活;可通过设置不同的LayoutManager、ItemDecoration和ITEMAnimator来实现不同的效果。
2)使用步骤
①加入依赖
compile 'com.android.support:recyclerview-v7:21.0.+'
②将RecyclerView加入布局文件中
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recycler_view"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
③在代码中得到RecyclerView控件的实例
mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
④配置RecyclerView的数据源,一般在项目中都是由网络操作得到数据后,封装到Bean中,然后加入到List<Bean>中作为数据源
⑤实现RecyclerView的Adapter适配器
->继承RecyclerView.Adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
->实现ViewHolder类,ViewHolder主要用来加载View(findByView方法),配置每个Item的监听器
class ViewHolder extends RecyclerView.ViewHolder{
private TextView mTextView;
public ViewHolder(View itemView) {
super(itemView);
mTextView = (TextView) itemView.findViewById(R.id.text_title);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(listener != null){
listener.onItemClicked(view, getLayoutPosition(), datas.get(getLayoutPosition()));
}
}
});
}
}
->实现适配器的构造器,将参数传入
public MyAdapter(Context context, List<String> datas) {
this.datas = datas;
mLayoutInflater = LayoutInflater.from(context);
}
->实现OnCreateView方法,主要就是为了将ItemView的布局文件传给ViewHolder
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(mLayoutInflater.inflate(R.layout.template_home_cardview, parent, false));
}
->实现onBindView方法,主要是为了将数据与空间进行绑定,将数据装载到控件中
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTextView.setText(datas.get(position));
}
->实现Adapter的其他方法
->为Adapter提供监听器,此监听器会绑定到每个Item上
private OnItemClickListener listener;
public void setListener(OnItemClickListener listener) {
this.listener = listener;
}
public interface OnItemClickListener{
void onItemClicked(View view, int position, String str);
}
@Override
public void onClick(View view) {
if(listener != null){
listener.onItemClicked(view,getLayoutPosition(), datas.get(getLayoutPosition()));
}
}
->为Adapter提供公共方法以供外界调用,如增加数据、删除数据等等。。。
public void addData(int position, String str){
datas.add(position, str);
notifyItemInserted(position);
}
public void removeData(int position){
datas.remove(position);
notifyItemRemoved(position);
}
⑥实例化Adapter,将数据传入
adapter = new MyAdapter(HomeFragment.this.getActivity(), datas);
⑦为每个Item设置监听器
adapter.setListener(new MyAdapter.OnItemClickListener() {
@Override
public void onItemClicked(View view, int position, String str) {
Toast.makeText(getContext(), str, Toast.LENGTH_LONG).show();
}
});
⑧为RecyclerView绑定适配器
mRecyclerView.setAdapter(adapter);
⑨为RecyclerView设置布局管理器
mRecyclerView.setLayoutManager(new LinearLayoutManager(HomeFragment.this.getActivity()));
或
mRecyclerView.setLayoutManager(new GridLayoutManager(HomeFragment.this.getActivity(),3));
⑩设置Decoration和Animator
mRecyclerView.addItemDecoration(new DividerItemDecoration(HomeFragment.this.getContext(), DividerItemDecoration.HORIZONTAL_LIST));
mRecyclerView.addItemAnimator();
现在,一个RecyclerView就已经可以使用了,更多的,比如结合CardView实现、通用Adapter的实现,图片加载的优化(Picasso)都会在后面进行讲解。
本文详细介绍了RecyclerView的概念及使用步骤,包括依赖加入、布局配置、数据源设置、Adapter实现等,并提供了实例代码。
1033

被折叠的 条评论
为什么被折叠?



