认识RecyclerView

感觉最近需要很好的理解Google推出良久的控件,Google对其定位,我们暂且不谈,反正很是灵活和实用。粗浅认识,和ListView和GridView功能和原理“类似”。

java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.support.v7.widget.RecyclerView

在使用RecyclerView的过程中,最明显与(ListView和GridView)的区别,是要设置布局管理器:

mRecyclerView.setLayoutManager(layoutManager);

目前可传入的参数有:

        LinearLayoutManager
        StaggeredGridLayoutManager(瀑布流布局)
        GridLayoutManager

接下来就是介绍它对应的适配器,基本流程
(当然网上大家都有自己的方法,不一定都是这么做,仅供参考~)

  • 基础适配器
  • 依据业务继承基类适配器并封装

简单讲就是继承RecyclerView.Adapter <自定义的ViewHolder>,再具体就是
RecyclerView的源码中有:

public static abstract class Adapter<VH extends ViewHolder>

里面有具体的抽象方法,也是我们开发中需要实现的方法:

public abstract VH onCreateViewHolder(ViewGroup parent, int viewType);

public abstract void onBindViewHolder(VH holder, int position);

public abstract int getItemCount();

如果不按以上方法写该控件适配器,你也可以参考一下以下代码,这是比较中规中矩的写法,当然了,我最早也是
按以下这种早期网络资料上很“成熟”方式写适配器的。(以下只是示例,具体写的话,依据业务具体对待~)

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder > {

        private List <String> items;

        public MyAdapter (@NonNull List<String> dateItems ) {
            this.items = (dateItems != null ? dateItems : new ArrayList<String>());
        }

        @Override public MyViewHolder onCreateViewHolder (ViewGroup viewGroup, int viewType) {
            View itemView = LayoutInflater.from( viewGroup.getContext  ()).inflate(R.layout .item,
             viewGroup, false );
            return new MyViewHolder(itemView);
        }

        @Override public void onBindViewHolder (MyViewHolder viewHolder, int position) {
            viewHolder.textView .setText(items.get (position));
        }

        @Override public int getItemCount () {
            return (this.items != null) ? this .items. size() : 0 ;
        }

        protected final static class MyViewHolder extends RecyclerView.ViewHolder {
            protected TextView textView ;

            public MyViewHolder (View itemView) {
                super(itemView);
                this.textView = (TextView) itemView.findViewById (R. id.text);
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值