1、Adapter是什么?(适配器)Adapter本身只是一个接口,它派生了ListAdapter、SpinnerAdapter两个子接口。ListAdapter为AbsListView提供列表项、SpinnerAdapter为AbsSpinnerAdapter提供列表项。几乎所有的Adapter都继承了BaseAdapter,而BaseAdapter同时实现了ListAdapter和SpinnerAdapter两个接口,因此BSEAdapter及其子类可以同时为ABSListView和AbsSpinner提供列表项。
2、Adapter常用的实现类如下:ArrayAdapter:简单、易用的Adapter,常用于将数组或者list集合的多个值包装成多个列表项。SimpleAdapter:功能强大,用于将 list集合的多个对象包装成多个列表项SimpleCursorAdapter:与SimpleAdapter基本相似,只能用于包装Cursor提供的数据。BaseAdapter:通常用于被扩展,扩展BaseAdapter可以对各项列表项进行最大限度的定制
3、Adapter为什么(要用它)?An蟠校盯昂droid是完全遵循MVC模式设计的框架,Activity是Controller,layout是View。因为layout有数种布局,很多数据不能直接绑定上去,因此Android引入了Adapter机制,作为复杂数据的展示的转换载体,各种Adapter只是转换的方式和能力不一样。Adapter常用来管理数据,使数据绑定到控件变得更简单灵活(比如列表的数据,网格的数据),为容器提供子视图,利用视图的数据和元数据来构建每个子视图。(思路)比如这样bear调用了monkey的方法a但是a方法的参数改了,这样bear的代码也得改;在中间加一个adapter,叫abc这样bear调用abc,abc调用monkey;当monkey的a方法发生改变时,不用改bear,改abc就可以了。这样可以保证变化性集中到abc
4、Adapter怎么用?(思路)基础的adapter用法比较简单,常见的情况是在基础的adapter上继承写一个新的,然后加入自己需要的功能,譬如列表项要是带图片带勾选按钮的,还要能对点击下拉等等。
5、使用ArrayAdapter创建ListView在layout布局文件下的main.xml<挢旗扦渌;?xmlversion租涫疼迟=”1.0”encoding=”utf-8”?><LinearLayoutxmlns:android=http://shema.android.com/apk/res/androidAndroid:orientation=”vertical”Android:layout_width=”match_parent”Android:layout_height=”match_parent”/><!—设置红色的分隔条--><ListViewAndroid:id=”@+id/list”Android:layout_width=”match_parent”Android:layout_height=”wrap_content”Android:divider=”#0ff” //分隔条,可用颜色,或者drawable分开Android:dividerHeight=”2px”Android:headerDividersEnabled=”false”/>//不在headerView之后绘制分隔条</LinearLayout>Activity为ListView提供Adapter,Adapter决定ListView显示的列表项PublicclassArrayAdapterTestextendsActivity{@OverrideProtectedvoidonCreate(BundlesavedInstanceState){Super.onCreate(savedInstanceState);setContentView(R.layou.main);LinstViewlist=(ListView)findViewById(R.id.list);//定义一个数组String[]={“大圣归来”,”捉妖记”,”煎饼侠”,”栀子花开”};//将数组包装成为ArrayAdapterArrayAdapter<String>adapter=newArrayAdapter<String>(this,R.layout.array_item,arr);//为ListView设置AdapterList.setAdapter(adapter)}}上面的R.layout.array_item布局如下<?xmlversion=”1.0”encoding=”utf-8”?><TextViewXmlns:android=http://schemas.android.com/apk/res/androidAndroid:id=”@+id/TextView”Android:layout_width=”match_parent”Android:layout_height=”wrap_content”Android:textSize=”24dp”Android:padding=”10px”Android:shadowColor=”#0f0”Android:shadowDx=”4”Android:shadowDy=”4”Android:shadowRadius=”2”/>