安卓开发之Adapter

2025-10-17 23:21:53

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 为什么(要用它)?

Android是完全遵循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

<?xml version=”1.0” encoding=”utf-8”?>

<LinearLayout xmlns:android=http://shema.android.com/apk/res/android

Android:orientation=”vertical”

Android:layout_width=”match_parent”

Android:layout_height=”match_parent”/>

<!—设置红色的分隔条-->

<ListView

Android:id=”@+id/list”

Android:layout_width=”match_parent”

Android:layout_height=”wrap_content”

Android:divider=”#0ff”    //分隔条,可用颜色,或者drawable分开

Android:dividerHeight=”2px”

Android:headerDividersEnabled=”false”/>  //不在header View之后绘制分隔条

</LinearLayout>

Activity 为ListView提供Adapter,Adapter决定ListView显示的列表项

Public class ArrayAdapterTest extends Activity{

@Override

Protected void onCreate(Bundle savedInstanceState){

Super.onCreate(savedInstanceState);

setContentView(R.layou.main);

LinstView list = (ListView) findViewById(R.id.list);

//定义一个数组

String [] = {“大圣归来”,”捉妖记”,”煎饼侠”,”栀子花开”};

//将数组包装成为ArrayAdapter

ArrayAdapter<String> adapter= new ArrayAdapter<String>(this,R.layout.array_item,arr);

//为ListView设置Adapter

List.setAdapter(adapter)

}

}

上面的R.layout.array_item布局如下

<?xml version=”1.0” encoding =”utf-8”?>

<TextView

Xmlns:android=http://schemas.android.com/apk/res/android

Android: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” />

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢