高性能ListView

  • 自定义适配器,通常通过继承BaseAdapter来构建适配器,因为BaseAdapter又是实现了ListAdapter和SpinnerAdapter两个接口.因此可以使用在ListView和spinner两个控件上,gridView继承absListView,所以也可以使用BaseAdapter来时适配.
自定义中最重要的就是覆写getView方法,getView(int position View contenView ViewGroup parent);
其中contenView若每次都定义一次来加载布局就非常的繁琐,因此要不断的使用已经存在的contentView.
所以对contentView的存在进行判定。
  • 普通正确方法:
getView(int position, View contenView,ViewGroup parent ){
if(contenView==null){
contentView=myinflater,inflate(R.layout.xxx,parent,null);
}
((TextView)contentView.findViewById(R.id.XX)).setText(Data[position]);}

  • 效率最高的方法:采用ViewHoder;
定义一个ViewHoder;

static ViewHoder{
ImageView imageView;
TextView texViewt; 

getView(int position ){
ViewHoder hoder;
if(contentView==null){
contenView=myinflate.inflate(R.layout.XX,parent,null);
hold = new ViewHold;
hold.text=(TextView)findViewById(R.id.XX);
hold.iamgeView=(IamgeView)findViewById(R.id.XX);
contetViewSetTag(hold);
}else{
hold= (VieHold)contentView.getTag();
}
hold.text.settext(Data[position]);
}

  • 当处理一些耗时的资源加载的时候需要做到以下几点,以使你的加载更快更平滑:

1.   适配器在界面主线程中进行修改

2.   可以在任何地方获取数据但应该在另外一个地方请求数据

3.   在主界面的线程中提交适配器的变化并调用notifyDataSetChanged()方法
对gridview控件的View对象分别进行监听,采用OnItemClickListener();




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值