资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,控件与,Adapter,AdapterView,1,什么是,AdapterView,与,Adapter,2Adapter,与,AdapterView,的搭配使用,3Adapter,的设计理念,1,什么是,AdapterView,与,Adapter,AdapterView,组件是一组重要的组件,因为它继承于,ViewGroup,所以它本身是个容器,因此它最大的作用是将许多“列表项”以合适的方式显示出来。,Adapter,本是是个抽象类,不可直接实例化,但它派生了许多间接子类:,各种,AdapterView,ListView,Spinner,GridView,网格视图,ListView,属性和方法,Spinner,属性和方法,AdapterView,官方定义:,An,AdapterView,is a view whose children are determined by an,Adapter,.,(,AdapterView,是内容由,Adapter,来决定的视图类),Adapter,官方定义:,An Adapter object acts as a bridge between an,AdapterView,and the underlying data for that view.The Adapter provides access to the data items.The Adapter is also responsible for making a View for each item in the data set.,ApapterView,的各种子类的创建和,Button,TetxView,等控件的创建一样,是很简单的,而,AdapterView,主要作用在于数据集合的表示,而这个工作主要由,Adpater,完成,所以重点在于要掌握,Adapter,。,ListView,常见,Adapter,ArraryAdapter,SimpleAdapter,BaseAdapter,CursorAdapter,创建每个,Adapter,时至少需要三个元素:,数据源,加载数据源的,View,应用上下文对象。,最简单的,ArrayAdapter,public class,MainActivity,extends Activity,ListView,listView,=null;,Spinner,spinner,=null;,Override,protected void,onCreate(Bundle,savedInstanceState,),super.onCreate(savedInstanceState,);,setContentView(R.layout.,activity_main,);,listView,=(,ListView)findViewById(R.id.,listview,);,在,Activity,中获得,ListView,实例化一个,Adapter,/,先创建一个数组,String,arr,=,三国演绎,红楼梦,水浒传,西游记,;,/,实例化一个,Adapter,ArrayAdapter,adapter1,=new,ArrayAdapter,(,this,R.layout.,list_item,arr,);,/,别忘了:为,listview,绑定,adapter,listView.setAdapter(adapter1);,运行结果,SimpleAdapter,public,class,SimpleAdapterTest,extends,Activity,private,String names=,new,String,虎头,弄玉,李清照,李白,;,private,String,descs,=,new,String,可爱的小孩,一个擅长音乐的女孩,一个擅长的文学的女性,浪漫主义诗人,;,private,int,imageIds,=,new,int,R.drawable.,tiger,R.drawable.,nongyu,R.drawable.,qingzhao,R.drawable.,libai,;,Override,public,void,onCreate(Bundle,savedInstanceState,),super,.onCreate(savedInstanceState,);,setContentView(R.layout.,main,);,/,创建一个,List,集合,,List,集合的元素是,Map,List,listItems,=,new,ArrayList,();,for,(,int,i=0;i,names.length,;i+),Map,listItem,=,new,HashMap,();,listItem.put(header,imageIdsi,);,listItem.put(personName,namesi,);,listItem.put(desc,descsi,);,listItems.add(listItem,);,/,创建一个,SimpleAdapter,SimpleAdapter,simpleAdapter,=,new,SimpleAdapter(,this,listItems,R.layout.,simple_item,new,String ,personName,header,desc,new,int,R.id.,name,R.id.,header,R.id.,desc,);,ListView,list=(,ListView,),findViewById(R.id.,mylist,);,/,为,ListView,设置,Adapter,list.setAdapter(simpleAdapter,);,运行结果:,灵活性最好的,BaseAdapter,1.,继承,BaseAdapter,2.,实现四个重要方法:,1.getCount(),2.getItem(int position),3.getItemId(int position),4,getView(int,position,View,cView,ViewGroup,parent),public,class,MyBaseAdapter,extends,BaseAdapter,Context,context,;,/final,int,number=10;,String names=,null,;,String numbers=,null,;,/,最好写默认的构造函数,/public,MyBaseAdapter,(),/,/,public,MyBaseAdapter(Context,context),this,.context,=context;,names=,new,Stringaaaa,bbbb,cccc,rrrr,wssw,xxxx,assss,;,numbers=,new,String131313,34242424,342424,3231313,1231313,1313,123131;,添加一个继承于,BaseAdapter,的类,创建一个,Spinner:,-,Spinner,spinner,=,null,;,spinner=(,Spinner)findViewById(R.id.,spinner,);,MyBaseAdapter,myBaseAdapter,=,new,MyBaseAdapter,(,this,);,spinner.setAdapter(myBaseAdapter,);,运行结果,GridView,GrivView,的创建与其它,ListView,一样,,GridView,相当于一中特殊的的,ListView,只要在创建时,指定列数即可:,如在布局文件:,-,之前为,ListView,和,Spinner,创建的,adapter,都可以绑定在,GrivView,上,运行结果:,ViewPager,3.Adapter,的设计理念,Adapter,利用了一种名为“适配模式”的设计模式,适配模式:,将一个类的接口转换成客户希望的另外一个接口。,Adapter,模式使得原本由于,接口不兼容,而不能一起工作的那些类可以在,一起,工作。,在,AdapterView,里,这种设计思想让,View,的绘制与数据的组织分离开来。,同一个,Adapte,实例可以让多个同类型的,View,使用,一个,view,可以绑定不同的,adapter.,不同类的,View,可以也甚至可以利用同一个,adapter,数据形式的修改不影响,View,View,的修改也不影响数据。,AdapterList,的监听事件,public,class,ListItemOnliclListenter,implements,OnItemClickListener,Override,public,void,onItemClick(AdapterView,arg0,View arg1,int,arg2,long,arg3),/,TODO,Auto-generated method stub,Toast.,makeText,(MainActivity.,this,您点击了,+arg2,2*1000).show();,listView.setOnItemClickListener(,new,ListItemOnliclListenter,();,spinner.setOnItemSelectedListener(,new,SpinnerOnItemOnSelectedListenter,();,public,class,SpinnerOnItemOnSelectedListenter,implements,OnItemSelectedListener,Override,public,void,onItemSelected(AdapterView,arg0,View arg1,int,arg2,long,arg3),Toast.,makeText,(MainActivity.,this,您点击了,+arg1.toString(),2*1000).show();,Override,public,void,onNothingSelected(AdapterView,arg0),/,TODO,Auto-generated method stub,
展开阅读全文