固然如今很多新的项目都在应用RecyclerView,然则很多开辟者在一些场景中照样偏向应用ListView或者GridView,然后就是须要写很多的Adapter。一次项目组在新启动一个新项目标时刻,有个同事拿来了一个网上说的全能Adapter,在应用的时刻发明即使在单个视图类型一旦逻辑断定比较复杂情况下异常不便利,更不消说袈溱适配器Adapter中应用多视图类型了,这里仅是小我不雅点,也许没有控制到精华。
当然了跟着RecyclerView的应用,网上也有很多有关对RecyclerView多视图类型Adapter封装的博客,MultiType 3.0是一个大年夜神写的比较周全的Adapter,全能适配器Adapter本身应用不是很便利,于是就参看RecyclerView中Adapter的实现方法进行对BaseAdapter进行了简单的封装,封装的目一是为了少写代码,别的一个就是让逻辑看上去更清楚一些。我们知道在RecyclerView的Adapter实现中它将视图创建与数据绑定进行了分别,同时将对View的查找创建也剥分开来了,本文就重要介绍若何将BaseAdapter的应用封装为跟RecyclerView的Adapter应用方法一致。因为很多时刻在Adapter中我们都是应用的简单的视图类型,即单类型视图,是以本文将单视图类型的Adapter零丁封装了一下,比应用多视图类型的Adapter应用了更严格的数据类型检查,同时在应用上也便利了很多。
在应用RecyclerView的Adapter的时刻我们起首须要持续RecyclerView的一个静态内部类Adapter,然后重写三个办法,实际高低面庞个办法是必须要重写的,因为都是抽象办法。
- getItemCount()
- onBindViewHolder(VH holder, int position)
- onCreateViewHolder(ViewGroup parent, int viewType)
一般情况下重写膳绫擎庞个办法就可以,然则如不雅存在多视图类型,在第三个办法
onCreateViewHolder()办法中我们也可以看到有一个参数是viewType,该参数感化就是针对不合的viewType须要创建不合的ViewHolder,是以还须要重写一个办法getItemViewType(int position),针对多视图类型同BaseAdapter实现方法倒是很像,在BaseAdapter中这是须要除此之外还要重写一个办法getViewTypeCount(),然则在RecyclerView的Adapter中不须要该办法。
简单类型Adapter
- private class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
- @Override
- public int getItemCount() {
- return COUNT;
- }
- @Override
- public void onBindViewHolder(MyViewHolder holder, int position) {
- holder.textView.setText("TEXT_" + position);
- }
- @Override
- public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_text, parent, false);
- MyViewHolder holder = new MyViewHolder(view);
- return holder;
- }
- }
- private static
推荐阅读
【海外风向标】阿斯利康公司CIO:想数字化转型成功?先给高层们“讲故事”吧
Dave Smoley比来停止了一个为期三年的数字化改革过程,固然大年夜多半CIO们可能会在此时打开一瓶喷鼻槟庆贺,但这位阿斯利康集团的IT引导人已经把计谋重点缀向了成长和立异。Smoley给所有>>>详细阅读
本文标题:Android 自定义 BaseAdapter 最佳实践
地址:http://www.17bianji.com/lsqh/35318.html
1/2 1