Android自定义Adapter适配器

package com.danxingxi.myspinner;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MySpinnerAdapter extends BaseAdapter {

	private Context mContext;
	private String[] mData;  //这里我们传进来的是一个数组
	
	public MySpinnerAdapter(Context mContext,String[] mData) 
	{
		this.mContext = mContext;
		this.mData = mData;
	}
	
	@Override
	public int getCount() {
		
		return mData.length;   //返回数组的长度
	}

	@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;
	}

	/*
	 * getView是主要要重写的方法,返回的是一个view对象
	 * 
	 * position就是你选择的 item的第几条从0开始
	 * convertView就是item上的布局layout或者组件
	 * ViewGroup parent就是你设置adapter的那个组件里面封装一个viewGroup用来盛放item,一般很少使用
	 */
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		//首相创建一个布局映射器
		
		System.out.println("==============>>"+position);
		
		LayoutInflater mInflater = LayoutInflater.from(mContext);
		
		//利用布局映射器得到item的布局文件
		
		ViewHolder holder;
		
		if(convertView == null)   //如果item的布局文件为空我们就为其创建一个
		{
			convertView = mInflater.inflate(R.layout.myspinner_item, null);
			/**
			 * 因为我们是把vlist2.xml的元素抽象出来成为一个类ViewHolder,
			 * 用了setTag,这个标签就是ViewHolder实例化后对象的一个属性。
			 * 我们之后对于ViewHolder实例化的对象holder的操作,
			 * 都会因为java的引用机制而一直存活并改变convertView的内容,
			 * 而不是每次都是去new一个。我们就这样达到的重用——我希望我说清楚了
			 */
			//为listview的每一个小项设置一个tag标记,当其被listview滚动到上面之后,
			//可以根据其tag将内存空间分给其他Item,实现重用
			holder = new ViewHolder();
			convertView.setTag(holder);
		}
		else  //如果item的布局文件不为空,则提取tag标签
		{
			
			holder = (ViewHolder) convertView.getTag();
			
		}
		
		/**
		 * 程序运行到这里我们的convertView就创建出来了,并且拥有了viewHolder对象,接下来我们将viewholder
		 * 接下来我们将viewholder对象中的变量初始化并赋值
		 */
		
		//找到id
		holder.tv = (TextView) convertView.findViewById(R.id.tv);
		//赋值
		holder.tv.setText(mData[position]);
		
		
		
		return convertView;
	}

	class ViewHolder  //数组里的具体内容转换到view控件的时候要使用
	{
		
		private TextView tv;
		
	}
	
}

你可能感兴趣的:(Android自定义Adapter适配器)