//CommonAdapter
import android.content.Context;
import android.widget.BaseAdapter; import java.util.List; /**
* Created by Administrator on 2016/1/28.
*/
public abstract class CommonAdapter<T> extends BaseAdapter {
private List<T> mDatas;
private int LayoutId;
private Context context; public CommonAdapter(List mDatas,int layoutId,Context context){
this.mDatas=mDatas;
this.context=context;
this.LayoutId=layoutId;
} @Override
public long getItemId(int position) {
return position;
} @Override
public Object getItem(int position) {
return mDatas.get(position);
} @Override
public int getCount() {
return mDatas.size();
} public List<T> getList(){
return mDatas;
} public void addBeanAtStart(T data){
mDatas.add(0,data);
notifyDataSetChanged();
}
public void addBeanAtEnd(T data){
mDatas.add(data);
notifyDataSetChanged();
}
public void addListAtStart(List datas){
mDatas.addAll(0, datas);
notifyDataSetChanged();
}
public void addListAtEnd(List datas){
mDatas.addAll(datas);
notifyDataSetChanged();
}
public void remove(int position){
if (mDatas!=null&&position<mDatas.size()&&position>=0)
mDatas.remove(position);
notifyDataSetChanged();
}
public void remove(T data){
mDatas.remove(data);
notifyDataSetChanged();
}
public void removeAll(){
if(mDatas!=null){
mDatas.clear();
notifyDataSetChanged();
}
}
public void replaceBean(int position,T data){
mDatas.remove(position);
mDatas.add(position,data);
}
}
ViewHolder :
import android.util.SparseArray;
import android.view.View; /**
* Created by Administrator on 2016/1/28.
*/
public class ViewHolder {
public static <T extends View> View get(int id, View convertView){
SparseArray<View> viewHolder= (SparseArray<View>) convertView.getTag();
if (viewHolder==null){
viewHolder=new SparseArray<>();
convertView.setTag(viewHolder);
}
View childView=viewHolder.get(id);
if(childView==null){
childView=convertView.findViewById(id);
viewHolder.put(id, childView);
}
return childView;
}
}

万能Adapter以及ViewHolder性能优化的更多相关文章

  1. Android之ListView性能优化——一行代码绑定数据——万能适配器

    如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...

  2. Android之ListView性能优化——使用ConvertView和ViewHolder

    使用ConvertView和ViewHolder的优化是针对ListView的Adapter(BaseAdapter)的.这种优化的优点如下: 1)重用了ConveertView,在很大程度上减少了内 ...

  3. 转-ListView的性能优化之convertView和viewHolder

    ListView的性能优化之convertView和viewHolder 2014-05-14 参考:http://www.cnblogs.com/xiaowenji/archive/2010/12/ ...

  4. Android性能优化之Listview(ViewHolder重用机制)

    相信大家在很多时候都会用到ListView这个控件,因为确实是用的很多很多,但是有木有遇到过当数据很多很多的时候,往下滑ListView时有时候会卡顿,这就需要我们来优化它了. ListView优化主 ...

  5. ListView性能优化——convertView&viewHolder

    ListView优化大致从以下几个角度:1.复用已经生成的convertView:2.添加viewHolder类:3.缓存数据(图片缓存):4.分页加载. 具体方案: 1.如果自定义适配器,那么在ge ...

  6. (转) Android开发性能优化简介

    作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...

  7. Android UI性能优化实战, 识别View中的性能问题

    出自:[张鸿洋的博客]来源:http://blog.csdn.net/lmj623565791/article/details/45556391 1.概述 2015年初google发布了Android ...

  8. [素材资源] Android开发性能优化简介(非常不错的)

    转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost& ...

  9. Android高手进阶:Adapter深入理解与优化

    一般是针对包含多个元素的View,如ListView,GridView,ExpandableListview,的时候我们是给其设置一个Adapter.Adapter是与View之间提供数据的桥梁,也是 ...

随机推荐

  1. SVN出现Invalid authz configuration解决方案

    思路: 1.检查是否为不存在的用户组或用户设置了权限(大部分为此问题,调整用户权限或删除账号后,但忘了去掉某个文件夹的权限) 2.检查authz文件的编码: 3.更改权限后是否未重启svn. 4.按照 ...

  2. C#_取随机字符

    1.多位数字字母组成,每位取值0-9A-Z /// <summary> /// 获取下一个顺序码根据上一个(数字字母组合) /// </summary> /// <par ...

  3. I/O Techie 社区 --欢迎您的加入

    I/O Techie 社区 上线了,希望能聚集更多的软件开发者,提供给处于各个阶段的新鸟,老鸟更多的帮助和更好的服务. 链接:http://www.iotechie.info/ Google +:ht ...

  4. View的滑动

    View的滑动 通过三种方式可以实现View的滑动: 1.通过View本身提供的scrollTo/scrollBy方法来实现滑动 2.通过动画给View施加平移效果来实现滑动 3.通过改变View的L ...

  5. 解决IE6/IE7/IE8不支持before,after问题

    对从事web开发的朋友来讲,低版本的IE永远是一个痛点,不支持最新技术(如css3,html5). 在现在web开发中使用图标字体已经很广泛,如Font Awesome,Bootstrap等,字体图片 ...

  6. 2.5美元每月的VPS, host1plus

    国内用的比较多的国外VPS应该算的上是Linode和DigitalOcean了,和他们相比Host1plus在价格上更有优势,最低每月2.5刀,也就相当于每月30多块的话费,而且Host1Plus支持 ...

  7. hexo建个人博客

    已经在腾讯云获得了域名和服务器,想着既然已经这样了,就折腾折腾自己的个人博客主页吧. 考虑再三决定用github pages来实现我的博客.github Pages可以被认为是用户编写的.托管在git ...

  8. VS加入全局缓存

    1. 加载 gacutil.exe /i <DLL Name>.dll 2. 卸载 gacutil.exe /u <DLL Name>

  9. Spring之注入的几种方式

    普通注入 在配置文件里 <!-- 构造注入 --> <bean id="user1" class="entity.User"> < ...

  10. C语言中的插入排序(2016-12-30)

    直接插入排序: 算法思想:假设待排序的记录存放在数组R[1--n]中,初始时,i=1,R[1]自成一个有序区,无序区为R[2--n].然后从i=2起直到i=n,依次将R[i]插入当前的有序区R[1.. ...