具体下载目录在 /2013年资料/8月/16日/ListView_v2_系统提供的一些 adapter适配器
第一个:ArrayAdapter首先这个ArrayAdapter已经实现了BaseAdapter中的那四个override方法,并且这个适配器中只能有一个TextView组件,大家可能会问为什么,我们先看看ArrayAdapter的源代码
public View getView(int position, View convertView, ViewGroup parent) {
return createViewFromResource(position, convertView, parent, mResource);
}
private View createViewFromResource(int position, View convertView, ViewGroup parent,
int resource) {
View view;
TextView text;
if (convertView == null) {
view = mInflater.inflate(resource, parent, false);
} else {
view = convertView;
}
try {
if (mFieldId == 0) {
// If no custom field is assigned, assume the whole resource is a TextView
//arrayadatper直接将view强转为TextView
text = (TextView) view;
} else {
// Otherwise, find the TextView field within the layout
text = (TextView) view.findViewById(mFieldId);
}
} catch (ClassCastException e) {
Log.e("ArrayAdapter", "You must supply a resource ID for a TextView");
throw new IllegalStateException(
"ArrayAdapter requires the resource ID to be a TextView", e);
}
T item = getItem(position);
if (item instanceof CharSequence) {
text.setText((CharSequence)item);
} else {
text.setText(item.toString());
}
return view;
}
下面 来看看 怎么用这个ArrayAdapter
第一步:定义一个行布局
<?xml version="1.0" encoding="utf-8"?>
<!--这就是一个只有TextView 的layout,注意下面那个xmlns必须要有,否则下面的Android:layout_width这些属性就没了。。。-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="title1"
>
</TextView>
在main布局里面 加入listview 这个跟前面的一样
<RelativeLayout 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"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
第二步:让MainActivity继承ListActivity,ListActivity中就有一个ListView,这样就可以直接使用setListAdapter(adapter)方法加入适配器就可以了
看一下源代码:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//这里不能有这个了,因为ListActivity中已经有布局了,如果非得用自己的布局,也可以这个后面再说啦~~~
//setContentView(R.layout.activity_main);
//首先创建一个 ArrayAdapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.list_item, mStrings);
/*参数说明:
* context: 要放入当前activity的对象,也就是那个this.
* textViewResourceId: 这个要放入一个TextView的资源id,就是 R.layout.list_item
* objects: listView的行内容,也就是mStrings.
**/
//ListActivity中存在一个ListView,直接设置就好
setListAdapter(adapter);
}
private String[] mStrings = {//listview的一些行内容
"Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
"Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale",
"Aisy Cendre", "Allgauer Emmentaler", "Alverca", "Ambert", "American Cheese",
"Ami du Chambertin", "Anejo Enchilado", "Anneau du Vic-Bilh", "Anthoriro", "Appenzell",
"Aragon", "Ardi Gasna",};
到这里 ArrayAdapter就算完成了看一下 , 效果吧