RecyclerView完全解析

本文详细介绍了RecyclerView的概念及使用步骤,包括依赖加入、布局配置、数据源设置、Adapter实现等,并提供了实例代码。

1)RecyclerView是什么?

是一种新的视图组,可完全代替ListViewGridView,可以为任何基于适配器的视图提供相似的渲染方式,在有限的窗口中展示大量的数据集;高度解耦、异常灵活;可通过设置不同的LayoutManagerItemDecorationITEMAnimator来实现不同的效果。

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>中作为数据源

⑤实现RecyclerViewAdapter适配器

->继承RecyclerView.Adapter

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>

->实现ViewHolder类,ViewHolder主要用来加载ViewfindByView方法),配置每个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(viewgetLayoutPosition()datas.get(getLayoutPosition()));
                }
            }
        });
    }
}

->实现适配器的构造器,将参数传入

public MyAdapter(Context contextList<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_cardviewparent, 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 positionString str);
}

@Override
public void onClick(View view) {
     if(listener != null){
           listener.onItemClicked(view,getLayoutPosition()datas.get(getLayoutPosition()));
     }
}

->Adapter提供公共方法以供外界调用,如增加数据、删除数据等等。。。

public void addData(int positionString str){
    datas.add(positionstr);
    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 positionString str) {
        Toast.makeText(getContext()strToast.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)都会在后面进行讲解。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值