BaseAdapter中ListView的显示与缓存机制

BaseAdapter
ListView的显示与缓存机制
Recycler---view缓存池需要的时候显示,显示完回收
BaseAdapter基本结构
—public int getCount():适配器中的数据集中数据的个数;
—public Object getItem(int position):获取数据集中与指定索引对应的数据项;
—public long getItemId(int position):获取指定行对应的ID;
—public View getView(int position, View convertView, ViewGroup parent):获取每一个Item的显示内容

三重进阶:
1、没有用到任何list缓存
2、使用系统提供的ConvertView对象:---convertView = mInflater.inflate(R.layout.item,null);
3、利用了listview的缓存还通过ViewHolder类的使用避免多次通过

解决重复findViewById寻找控件:
------定义一个内不类ViewHolder定义控件类
if(convertView==null){
viewHolder = new ViewHolder(); //避免静态丢失
convertView = mInflater.inflate(R.layout.item,null);
viewHolder.xxx = xxxx;
convertView.setTag(viewHolder);//建立关系
}else{
viewHolder = (ViewHolder)convertView.getTag();//得到关联对象
}
ItemBean bean = mList.get(positon); // 对应条目的数据在对应的List<ItemBean>取
viewHolder.xxx.setXxx(bean.getXxx());

System.nanoTime()//获取纳秒时间

解决数据问题

BaseAdapter支持list<?>数据:所以要创建一个数据类所以要创建一个数据类

先看BaseAdapter的实现:

package zxx.wangti.content;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import zxx.wangti.R;
/**
 * 1、 在这里完成适配 2、使用HoldView 完成list的优化 3、
 */
public class ItemAdapter extends BaseAdapter {
	private Context context;
	private List<Bean> listBeandata;//baseadapter 不能用map<?,?>所以要创建一个数据类
	private LayoutInflater minflater;

	// ViewHolder用于缓存控件
	class ViewHolder {
		public ImageView image;
		public TextView title;
		public TextView message;
		public TextView pag;
	}

	public ItemAdapter(Context context) {
		this.context = context;
		//模拟一条数据
		listBeandata=new ArrayList<Bean>();
		for (int i = 0; i < 20; i++) {
		Bean mbean=new Bean();
		mbean.title="这是一个title";
		mbean.message="这是一个message";
		mbean.pag="这是一个pag";
		listBeandata.add(mbean);
		}
		minflater = LayoutInflater.from(context);
	}



	@Override
	public View getView(int position, View convertView, ViewGroup root) {
		Bean mbean=listBeandata.get(position);
		ViewHolder viewholder = null;
		if (convertView == null) {
			viewholder = new ViewHolder();
			convertView = minflater.inflate(R.layout.item, null);
			viewholder.image = (ImageView) convertView.findViewById(R.id.item_image);
			viewholder.title = (TextView) convertView.findViewById(R.id.item_title);
			viewholder.message = (TextView) convertView.findViewById(R.id.item_message);
			viewholder.pag = (TextView) convertView.findViewById(R.id.item_pag);
			convertView.setTag(viewholder);
		} else {
			viewholder = (ViewHolder) convertView.getTag();
		}
		viewholder.image.setImageResource(R.drawable.ic_launcher);
		viewholder.title.setText(mbean.title);
		viewholder.message.setText(mbean.message);
		viewholder.pag.setText(mbean.pag);
		return convertView;
	}

	public int getCount() {
		// TODO Auto-generated method stub
		return 20;
	}

	@Override
	public Object getItem(int arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getItemId(int arg0) {
		// TODO Auto-generated method stub
		return 0;
	}
}

实现Adapter所需要的Bean类:



package zxx.wangti.content;

public class Bean {
	String title;
	String message;
	String pag;
	
}


这样就可以用Activity中的listview实现适配了 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值