BaseAdapter

某些需要明确的是BaseAdapter 是什么,是适配器,在什么场合可能会用到。例如listview,gridview的使用。那么继续baseadapter是基础的适配器,其他的适配器都是某这个衍生而来。那么可以肯定的说,这个BaseAdapter 可以很好的扩展自己需要的东西
那么现在说的是,如何去优化一个BaseAdapter,什么?为什么要优化,节约资源,循环再用。

/*
 * AuditReport 适配器
 */
public class AuditReportAdapter extends BaseAdapter {
	private LayoutInflater inflater;
	public AuditReportAdapter(Context context){
		super();
		inflater = LayoutInflater.from(context);
	}
	@Override
	public int getCount() {
		return 0;
	}

	@Override
	public Object getItem(int arg0) {
		return null;
	}

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

	@Override
	public View getView(int arg0, View arg1, ViewGroup arg2) {
		Hoolder hoolder;//用于标志视图的东西
		if(arg1 == null){
			arg1 = inflater.inflate(R.layout.auditreport_layout_item, null);
			hoolder = new Hoolder();
			hoolder.imageView = (ImageView)arg1.findViewById(R.id.imageView);
			hoolder.nameTextView = (TextView)arg1.findViewById(R.id.textview_name);
			hoolder.dateTextView = (TextView)arg1.findViewById(R.id.textview_date);
			arg1.setTag(hoolder);//设置tag
		}else {
			hoolder = (Hoolder) arg1.getTag();//从tag中获取 hoolder
		}
		
		//Todo 
//		hoolder.imageView 
//		hoolder.nameTextView 
//		hoolder.dateTextView 
		
		
		return arg1;
	}

	private class Hoolder {//标志类
		ImageView imageView;
		TextView nameTextView;
		TextView dateTextView;
	}
}

Look

从上面的代码中,可以知道的是,我们需要一个类来保存你想多个显示相同的东西。然后当当前视图不再缓存存在的时候,我们会新建一个,如果存在缓存中。那么我们会从缓存中获取数据。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#cccccc" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" 
       >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="上传者:" />
         <TextView
             android:id="@+id/textview_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="我是人" />
    </LinearLayout>

    <TextView
        android:id="@+id/textview_date"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="2014年" />

</LinearLayout>

Tag

多点学习,多点阅读