//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. bzoj1968真·想sha法bi题

    本来想打表找规律的来着,,, 线性筛吗?一边筛一边累加答案?那不就不线性了吗...1e6悬啊 而且不是质因数个数而是因数个数,统计起来应该还要用数学方法 ...好尴尬 等一下,不要求质数的话我筛个p ...

  2. canvas小结

    前段时间在公司没什么事干,研究了一下canvas,在实际开发中还没正式应用过,但是已经深深感觉到其魅力之处.下面写一写我认为canvas中比较重要的点,如有理解错误,欢迎指正. 首先canvas是h5 ...

  3. UITextView 点击添加文字 光标处于最后方

    #import "ViewController.h" @interface ViewController ()<UITextViewDelegate> @end @im ...

  4. ubuntu 16.04 Dockerfile 安装mysql

    默认上MariaDB的包并没有在Ubuntu仓库中.要安装MariaDB,我们首先要设置MariaDB仓库. 配置MariaDB 仓库 # apt-get install software-prope ...

  5. 对象的this引用

    Java中的this关键字总是指向调用该方法的对象.根据this出现位置的不同,this作为对象的默认引用有两个功能: 1.构造器中引用该构造器正在初始化的对象. 2.在方法中引用调用该方法的对象. ...

  6. #iOS问题记录#关于NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9801)

    响应Apple的号召,将APP里的HTTP请求全部升级为HTTPS,一切配置OK,正常的请求也没问题: 但,当使用SDwebImg缓存图片时,遇到了标题写的问题: 根据资料得: 这个问题的出现是因为i ...

  7. nodejs学习之events的使用

    实用events做个小例子: var mysql = require("mysql"); var Event = require("events").Event ...

  8. reconnectingwebsocket.js

    // MIT License: // // Copyright (c) 2010-2012, Joe Walnes // // Permission is hereby granted, free o ...

  9. JAVA笔试题集(一)--JAVASE部分

    红色答案为参考答案 1.从下列选项中选择正确的Java表达式(多选) A.  int k=new String("aa");       B.  String str=String ...

  10. 代码片段:处理HTTP请求的接口

    以下程序用来获取用户传递过来的信息. 1.头文件 /* * 这个是处理HTTP请求的接口头文件 */ #define KEY_VALUE_MAX 1024 /* 键值的最大长度 */ typedef ...