BaseAdapter封装 实现万能适配器

1.封装ViewHodler

 1 package com.example.utils;
 2
 3 import android.content.Context;
 4 import android.graphics.Bitmap;
 5 import android.util.SparseArray;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 import android.widget.ImageView;
10 import android.widget.TextView;
11
12 public class ViewHolder {
13
14     private SparseArray<View> mViews;
15     private int mPostion;
16     private View mConverView;
17     private View view;
18
19     public ViewHolder(Context context, View converview, ViewGroup parent,
20             int layoutid, int postion) {
21
22         this.mPostion = postion;
23         mConverView = LayoutInflater.from(context).inflate(layoutid, parent,false);
24         mViews = new SparseArray<View>();
25         mConverView.setTag(this);
26     }
27
28     public static ViewHolder get(Context context, View converView,
29             ViewGroup parent, int layoutid, int postion) {
30
31         if (converView == null) {
32             return new ViewHolder(context, converView, parent, layoutid,postion);
33         } else {
34             ViewHolder holder = (ViewHolder) converView.getTag();
35             holder.mPostion = postion;
36             return holder;
37         }
38
39     }
40
41     public View getConverView() {
42         return mConverView;
43     }
44
45     /**
46      * @author 通过id获取控件
47      *
48      * */
49
50     public <T extends View> T getView(int viewId) {
51
52         View view = mViews.get(viewId);
53         if (view == null) {
54             view = mConverView.findViewById(viewId);
55             mViews.put(viewId, view);
56         }
57         return (T) view;
58
59     }
60     public   ViewHolder  getTextView(int  id,String  tv){
61
62         TextView  mTextView = getView(id);
63         mTextView.setText(tv);
64         return  this;
65     }
66
67     public  ViewHolder  getImageResoure(int  id,int  color){
68
69         ImageView   img=getView(id);
70         img.setImageResource(color);
71         return this;
72     }
73
74     public  ViewHolder  getImageBitmap(int  id,Bitmap  map){
75
76         ImageView   view=getView(id);
77         view.setImageBitmap(map);
78         return this;
79     }
80 }

2.    封装BaseAdapter

 1 package com.example.utils;
 2
 3 import java.util.List;
 4 import android.content.Context;
 5 import android.view.LayoutInflater;
 6 import android.view.View;
 7 import android.view.ViewGroup;
 8 import android.widget.BaseAdapter;
 9
10 public abstract class CommonAdapter<T> extends BaseAdapter {
11
12     protected  Context  mContext;
13     protected  List<T> mDatas;
14     protected  LayoutInflater  mInflater;
15     protected  int  mlayoutId;
16     public CommonAdapter(Context  context,List<T> data,int  layoutId) {
17
18         this.mContext=context;
19         this.mDatas=data;
20         mInflater=LayoutInflater.from(mContext);
21         this.mlayoutId=layoutId;
22     }
23
24     @Override
25     public int getCount() {
26         return mDatas.size();
27     }
28
29     @Override
30     public T getItem(int postion) {
31         return mDatas.get(postion);
32     }
33
34     @Override
35     public long getItemId(int postion) {
36         return postion;
37     }
38
39     @Override
40     public View getView(int postion, View converview, ViewGroup group){
41         ViewHolder  holder=ViewHolder.get(mContext, converview, group, mlayoutId, postion);
42         convert(holder, getItem(postion));
43         return  holder.getConverView();
44       };
45
46      public  abstract   void  convert(ViewHolder  holder,T t);
47 }

3.自己的MyAdapter

 1 package com.example.utils;
 2
 3 import java.util.List;
 4
 5 import android.content.Context;
 6 import com.example.adapter.R;
 7 import com.example.bean.Bean;
 8
 9 public class MyAdapter extends CommonAdapter<Bean>{
10
11     public MyAdapter(Context context, List<Bean> data, int layoutId) {
12         super(context, data, layoutId);
13     }
14
15     @Override
16     public void convert(ViewHolder holder, Bean bean) {
17
18         holder.getTextView(R.id.tv_title, bean.getTitle());
19         holder.getTextView(R.id.tv_time, bean.getTime());
20         holder.getTextView(R.id.tv_from, bean.getForm());
21     }
22 }
时间: 2024-12-05 18:28:57

BaseAdapter封装 实现万能适配器的相关文章

Android适配器之基于BaseAdapter定义AbslistView万能适配器

为统一数据相关操作,现给出数据处理相关操作的接口定义,其中包含对列表数据的增删改查等常规操作. /** * Created by Administrator on 2016/4/19. * 适配器的数据修改方法的定义 */public interface IAdapterDataModifyHelper<T> { /** * 通知适配器更新界面 * * @param INotifyDataSetChange*/void setNotifyAdapterDataSetChange(INotify

Android开发之万能适配器

ListView.GridView等等非常多的东西都需要适配器.而如果开发一个app每一个listview都有写一个Adapter的话,那还怎么愉快的玩游戏.. 什么是ViewHolider以及的用法和为什么要用? 这位博主写的非常好. http://www.cnblogs.com/lichenwei/p/4085107.html 所谓的万能适配器,无非是将适配器的重复代码抽取出来进行封装.不同功能的代码则留写一个方法留给用户复写,则每个listview的适配器就只变成几句话就够了. 这是一般适

慕课网 万能适配器学习笔记

首先再次感谢 慕课网的技术大牛分享了该课程. 一.传统 ListView 适配器的模式:1. 创建Listview,并为listview 创建item布局2.封装数据 3.为Item布局创建特定的适配器 用于数据展示.(在这过程中,如果某一个ListView 的item中控件过多,控件的生命及调用会导致代码量上升,而如果一个app中有很多个地方需要用到ListView 时,需要分别写多个适配器,会导致很多重复性的操作,为了避免这种情况的发生,让编码更轻松,可参考 慕课网Android万能适配器

Android之ListView性能优化——万能适配器

如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有觉得有什么不好的.直到最近在慕课网上看到鸿洋大神讲的“机器人小慕”和“万能适配器”两节课,才对BaseAdapter有所了解.看了鸿洋大神的课程之后,我又上网搜了几个博客,也看了一些源码和文档,于是打算写一个帖子来记录一下自己的学习历程. 在今天的帖子中,我们从一个最基本的实现BaseAdapter

安卓开发笔记——打造万能适配器(Adapter)

为什么要打造万能适配器? 在安卓开发中,用到ListView和GridView的地方实在是太多了,系统默认给我们提供的适配器(ArrayAdapter,SimpleAdapter)经常不能满足我们的需要,因此我们时常要去继承BaseAdapter类去实现一个自定义的适配器来满足我们的场景需要. 如果你是开发一个简单点的APP还好,可能ListView和GridView的数量不会太多,我们只要去写几个BaseAdapter实现类就可以了. 但如果有一天,你需要开发一个APP里面具有几十个ListV

Android进阶笔记10:Android 万能适配器

1. Android 万能适配器      项目中Listview GridView几乎是必用的组件,Android也提供一套机制,为这些控件绑定数据,那就是Adapter.用起来虽然还不错,但每次都需要去继承一个BaseAdapter,然后实现里面的一大堆方法,而我们每次最关心的无非就是getView方法,其余的方法几乎都是相同代码.这里是不是就可以优化起来呢?在其次,我们在使用Adapter的时候,为了优化性能,常常会创建一个Holder.而Holder里面每次存放的都是View,对Hole

万能适配器的一些问题

不用万能适配器volley都能搞定如果用万能适配器则不能用volley(因为万能适配器里边有自己的settag)可以用NUtils在 NUtils里边自定义三级缓存每次设图片时都去访问三级缓存 1 package com.example.wannengadapter; 2 3 import java.util.List; 4 5 import android.content.Context; 6 import android.view.LayoutInflater; 7 import andro

打造android偷懒神器———RecyclerView的万能适配器

转载请注明出处谢谢:http://www.cnblogs.com/liushilin/p/5720926.html 很不好意思让大家久等了,本来昨天就应该写这个的,无奈公司昨天任务比较紧,所以没能按时给大家带来RecyclerView的适配器,楼主对期待的小伙伴表示最深刻地歉意. 如果你没有看前面的万能的ListView,GridView等的万能适配器,楼主推荐你去看一看,当然,大牛就免了. 另外,楼主今天在构思这个RecyclerView的过程中发现前天写的ListView有点毛病,现在楼主已

万能适配器

初学Android,通过网上视频.资料整理了万能适配器的编写,记录一下,方便以后使用. CommonAdapter public abstract class CommonAdapter<T> extends BaseAdapter { protected Context mContext; protected List<T> mDatas; protected LayoutInflater mInflater; private int layoutId; public Commo