您的位置:首页 > 其它

一个利用convertView的adapter,可以优化ListView。

2015-03-04 17:25 447 查看
package com.ghj.test;

import java.util.ArrayList;

import com.new560315.entity.Wlsbs;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.BaseAdapter;
import android.widget.TextView;
/**
 * 这是一个优化的adapter。即使listview要加载的条目再多也不影响性能。
 * @author Administrator
 *
 */

public class MyAdapter extends BaseAdapter {
	private ArrayList<Wlsbs> list;
	private Context context;
	/**
	 * 构造一个高性能的adapter
	 * @param list
	 * 类型为Wlsbs的bean数据集合
	 * @param context
	 * MainActivity.this
	 */
	public MyAdapter(ArrayList<Wlsbs> list,Context context) {
		this.list = list;
		this.context = context;
	}
	
	@Override
	public int getCount() {
		return list.size();
	}

	@Override
	public Object getItem(int position) {
		return list.get(position);
	}

	@Override
	public long getItemId(int position) {
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder holder;
		if(convertView==null){
			convertView = View.inflate(context, R.layout.item_main, null);
			holder = new ViewHolder();
			
			holder.tv_companyAddress = (TextView) convertView.findViewById(R.id.tv_companyAddress);
			holder.tv_companyName = (TextView) convertView.findViewById(R.id.tv_companyName);			
			holder.wv = (WebView) convertView.findViewById(R.id.wv);
			
			holder.tv_companyAddress.setText(list.get(position).getCompanyAddress());
			holder.tv_companyName.setText(list.get(position).getCompanyName());			
			holder.wv.loadData(list.get(position).getDescription(), "text/html", "UTF-8");
			
			convertView.setTag(holder);
		}else{
			holder = (ViewHolder) convertView.getTag();
			holder.tv_companyAddress.setText(list.get(position).getCompanyAddress());
			holder.tv_companyName.setText(list.get(position).getCompanyName());			
			holder.wv.loadData(list.get(position).getDescription(), "text/html", "UTF-8");
		}
		
		
		return convertView;
	}
	private static class ViewHolder{
		TextView tv_companyAddress;
		TextView tv_companyName;		
		WebView wv;
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: