固然如今很多新的项目都在应用RecyclerView,然则很多开辟者在一些场景中照样偏向应用ListView或者GridView,然后就是须要写很多的Adapter。一次项目组在新启动一个新项目标时刻,有个同事拿来了一个网上说的全能Adapter,在应用的时刻发明即使在单个视图类型一旦逻辑断定比较复杂情况下异常不便利,更不消说袈溱适配器Adapter中应用多视图类型了,这里仅是小我不雅点,也许没有控制到精华,这是有关全能适配器Adapter的一片博文 Android 快速开辟系列 打造全能的ListView GridView 适配器 。
当然了跟着RecyclerView的应用,网上也有很多有关对RecyclerView多视图类型Adapter封装的博客,MultiType 3.0是一个大年夜神写的比较周全的Adapter,这篇博客Android 复杂的多类型列表视图新写法:MultiType 3.0有具体的用法。全能适配器Adapter本身应用不是很便利,于是就参看RecyclerView中Adapter的实现方法进行对BaseAdapter进行了简单的封装,封装的目一是为了少写代码,别的一个就是让逻辑看上去更清楚一些。我们知道在RecyclerView的Adapter实现中它将视图创建与数据绑定进行了分别,同时将对View的查找创建也剥分开来了,本文就重要介绍若何将BaseAdapter的应用封装为跟RecyclerView的Adapter应用方法一致。因为很多时刻在Adapter中我们都是应用的简单的视图类型,即单类型视图,是以本文将单视图类型的Adapter零丁封装了一下,比应用多视图类型的Adapter应用了更严格的数据类型检查,同时在应用上也便利了很多。
RecyclerView中Adapter的应用
一般情况下重写膳绫擎庞个办法就可以,然则如不雅存在多视图类型,在第三个办法
onCreateViewHolder()办法中我们也可以看到有一个参数是viewType,该参数感化就是针对不合的viewType须要创建不合的ViewHolder,是以还须要重写一个办法getItemViewType(int position),针对多视图类型同BaseAdapter实现方法倒是很像,在BaseAdapter中这是须要除此之外还要重写一个办法getViewTypeCount(),然则在RecyclerView的Adapter中不须要该办法。
简单类型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 class MyViewHolder extends RecyclerView.ViewHolder {
推荐阅读
Relations 本文译自 What is a NoSQL Database? Learn By Writing>NoSQL 这个词在近些年正变得到处可见. 然则到底 "NoSQL" 指的是什么? 它是若何并且为什么这么竽暌剐用? 在本文, 我们将会>>>详细阅读
本文标题:Android自定义BaseAdapter最佳实践
地址:http://www.17bianji.com/lsqh/35304.html
1/2 1