作家
登录

Android自定义BaseAdapter最佳实践

作者: 来源: 2017-05-18 13:28:12 阅读 我要评论

  •  
  •     public abstract void onBindViewHolder(ViewHolder holder, int position); 
  •  
  •     public abstract ViewHolder onCreateViewHolder(ViewGroup parent, int viewType); 
  •  
    1. public class ViewHolder { 
    2.     private final View itemView; 
    3.  
    4.     public ViewHolder(View itemView) { 
    5.         if (null == itemView) { 
    6.             throw new IllegalArgumentException("itemView must not be null"); 
    7.         } else { 
    8.             this.itemView = itemView; 
    9.             itemView.setTag(this); 
    10.         } 
    11.     } 
    12.  
    13.     public View getItemView() { 
    14.         return itemView; 
    15.     } 

    在ViewHolder中的itemView就是getView()办法中的convertView,这里刚好是条目标根View,类似RecyclerView中ViewHolder构造办法中itemView。因为不合的视图须要创建不合的ViewHolder,是以我们可以将创建ViewHolder的办法设置为抽象的办法裸露出去,别的赋值的时刻我们也须要根据具体的营业进行赋值,同样设置一个抽象办法。

    1. public abstract class SimpleAdapter<T,VH extends ViewHolder> extends MyAdapter<T> { 
    2.  
    3.     public SimpleAdapter(Context context) { 
    4.         super(context); 
    5.     } 
    6.  
    7.     public View getView(int position, View convertView, ViewGroup parent) { 
    8.         VH holder = null
    9.         if (null == convertView) { 
    10.             holder = onCreateViewHolder(parent); 
    11.             convertView = holder.getItemView(); 
    12.         } else { 
    13.             holder = (VH) convertView.getTag(); 
    14.         } 
    15.         onBindViewHolder(holder, position); 

        推荐阅读

        用Python写一个NoSQL数据库

      Relations 本文译自 What is a NoSQL Database? Learn By Writing>NoSQL 这个词在近些年正变得到处可见. 然则到底 "NoSQL" 指的是什么? 它是若何并且为什么这么竽暌剐用? 在本文, 我们将会>>>详细阅读


      本文标题:Android自定义BaseAdapter最佳实践

      地址:http://www.17bianji.com/lsqh/35304.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)