//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. my97DatePicker日期控件——日期输入框联动,使用focus使第二个输入框没展示出日期控件

    描述问题场景: 1.jquery使用的版本是jquery-1.7.2.min.js 2.代码不是写在页面上的,是通过事件后追加的 <!DOCTYPE html> <html> ...

  2. Curator Cache

    1.Curator Cache 与原生ZooKeeper Wacher区别 原生的ZooKeeper Wacher是一次性的:一个Wacher一旦触发就会被移出,如果你想要反复使用Wacher,就要在 ...

  3. 关于UIScrollerView的基本用法和代理

    - (void)viewDidLoad { [super viewDidLoad];  scrollView = [[UIScrollView alloc] initWithFrame:CGRectM ...

  4. Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...

  5. MySQL字符集

    字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...

  6. mongodb的修改器

    在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以 ...

  7. c#动态编译并动态生成dll

    /// <summary> /// 动态编译并执行代码 /// </summary> /// <param name="code">代码< ...

  8. ARM 编译 phddns

    参考博文http://bluegemyf.blog.163.com/blog/static/11816340201310472751513/ 1.安装必要的开发包 sudo apt-get  inst ...

  9. canvas :曲线的面积图 加渐变效果

    document.body.innerHTML = '<canvas></canvas>' var cvs = document.querySelector("can ...

  10. 对 griview获取的数据添加方法 6月

    <asp:TemplateField HeaderText="日期">                            <HeaderStyle CssCl ...