AdapterView是一组重要的组件,AdapterView本身是一个抽象基类,它派生的子类在用法上十分相似,只是显示界面有一定的区别。
Adapter View具有如下特征:
AdapterView及其子类的继承关系:
Adapter本身只是一个接口,它派生了 ListAdapter和 SpinnerAdapter
两个子接口,其中ListAdapter为AbsListView提供列表项,而SpinnerAdapter为AbsSpinner提供列表项。Adapter接口及其实现类的继承关系:
Adapter常用的实现类:
创建新项目
主布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/list1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#f00"
android:dividerHeight="1dp"
android:headerDividersEnabled="false" />
<ListView
android:id="@+id/list2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#0f0"
android:dividerHeight="1dp"
android:headerDividersEnabled="false" />
LinearLayout>
array_item.xml
<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="5dp"
android:shadowColor="#f0f"
android:shadowDx="4"
android:shadowDy="4"
android:shadowRadius="2"/>
checked_item.xml
<CheckedTextView
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="24sp"
android:checkMark="@drawable/ok"
android:shadowColor="#f0f"
android:shadowDx="4"
android:shadowDy="4"
android:shadowRadius="2"/>
逻辑代码
通过Adapter提供列表项
package com.dingjiaxiong.adapterviewtest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list1 = findViewById(R.id.list1);
//定义一个数组
String[] arr1 = new String[]{"孙悟空","猪八戒","牛魔王"};
ArrayAdapter adapter1 = new ArrayAdapter(this,R.layout.array_item,arr1);
//为listview设置adapter
list1.setAdapter(adapter1);
ListView list2 = findViewById(R.id.list2);
//定义一个数组
String[] arr2 = new String[]{"Java","Hibernate","Spring","Android"};
//将数组包装为ArrayAdapter
ArrayAdapter adapter2 = new ArrayAdapter(this,R.layout.checked_item,arr2);
//为listview设置adapter
list2.setAdapter(adapter2);
}
}
ArrayAdapter参数:
运行效果