使用ArrayAdapter创建ListView
首先先在布局文件中定义两个ListView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.cao156.arrayadaptertest.MainActivity">
<!--设置红色的分隔线-->
<ListView
android:id="@+id/list1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#f00"
android:dividerHeight="2px"
android:headerDividersEnabled="false"></ListView>
<!--设置绿色的分隔线-->
<ListView
android:id="@+id/list2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#0f0"
android:dividerHeight="2px"
android:headerDividersEnabled="false">
</ListView>
</LinearLayout>
上述两个ListView都没有指定android:rntries属性,这意味着他们都要通过Adapter来提供列表项。接下来的Activity为这两个ListView提供Adapter,Adapter决定ListView所显示的列表项。
package com.example.cao156.arrayadaptertest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.ListViewCompat;
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 = (ListView) findViewById(R.id.list1);
ListView list2 = (ListView) findViewById(R.id.list2);
//定义一个数组
String[] arr1={"孙悟空","牛魔王","猪八戒"};
//将数组包装为ArrayAdapter
ArrayAdapter<String> adapter1=new ArrayAdapter<String>(this,R.layout.array_item,arr1);
//位ListView设置Adapter
list1.setAdapter(adapter1);
String[] arr2={"Java","Hibernate","Spring","Android"};
//将数组包装为ArrayAdapter
ArrayAdapter<String> adapter2=new ArrayAdapter<String>(this,R.layout.checked_item,arr2);
//位ListView设置Adapter
list2.setAdapter(adapter2);
}
}
创建ArrayAdapter时必须指定如下三个参数。
Context:这个参数无需多说,它代表了访问整个Android应用的接口。几乎创建所有组件都需要传入Context对象。
textViewResourceId:一个资源ID,该ID代表一个TextView,该TextView组件将作为ArrayAdapter的列表项组件。
数组或List:该数组或List将负责为多个列表项提供数据
上面用到的R.layout.checked_item布局文件和R.layout.array_item布局文件。
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/TextView"
android:textSize="24dp"
android:checkMark="@drawable/ok"
android:shadowColor="#f0f"
android:shadowDy="4"
android:shadowDx="4"
android:shadowRadius="2">
</CheckedTextView>
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/TextView"
android:textSize="24dp"
android:padding="10px"
android:shadowColor="#f0f"
android:shadowDy="4"
android:shadowDx="4"
android:shadowRadius="2"/>