1.自定义listview,首先在activity.xml中插入一个listview,可以用android:divider=“”设置分割线颜色样式,android:dividerHeight=""设置分割线高度。
2.新建viewholder_item.xml设计每行Item显示的样式布局。
3.自定义Adapter(继承BaseAdapter),定义一个内部类ViewHolder,并将布局中的控件作为成员变量。如:
public final class ViewHolder{
		public ImageView img;
		public TextView title;
	}
然后在getView()方法中通过视图缓存机制来重新以缓存。完整创建代码如下:
package com.example.listview;
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;
public class ViewHolderAdapter extends BaseAdapter {
	private List<String> mData;
	private LayoutInflater mInflater;
	
	public ViewHolderAdapter(Context context,List<String> data){
		this.mData=data;
		mInflater=LayoutInflater.from(context);
	}
	
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return mData.size();
	}
	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return mData.get(position);
	}
	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		ViewHolder holder=null;
		if(convertView==null){
			holder=new ViewHolder();
			
			convertView=mInflater.inflate(R.layout.viewholder_item,null);//填充自定义item
			holder.img=(ImageView)convertView.findViewById(R.id.imageView);
			holder.title=(TextView)convertView.findViewById(R.id.textView);
			convertView.setTag(holder);
		}else{
			//通过Tag找到缓存的布局
			holder=(ViewHolder)convertView.getTag();
		}
			
		holder.img.setBackgroundResource(R.drawable.one);				
		holder.title.setText(mData.get(position));
		
		return convertView;
	}
	
	public final class  ViewHolder{
		public ImageView img;
		public TextView title;
	}
}
4.最后在MainActivity中显示。
package com.example.listview;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
public class MainActivity extends Activity {
	private List<String> mData;
	private ViewHolderAdapter adapter;
	private ListView listview;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		listview=(ListView) findViewById(R.id.listview);
		mData=new ArrayList<String>();
		for(int i=0;i<120;i++){
			mData.add(""+i);
		}
		
		adapter=new ViewHolderAdapter(this,mData);
		listview.setAdapter(adapter);
		
	}
	
}