關於適配器的解釋,簡單的講就是把要顯示給用戶的數據信息通過適當的模式動態的填充各種ListView,也可以看作是界面數據綁定的一種理解,它所操縱的數據一般都是一些比較複雜的數據,界面是有一定規律的View。由於一些特殊的需要,往往需要自己定義適配器來完成顯示功能,下面就以較爲常用的適配器簡介其用法:
1、首先要定義一個用於顯示ListView的佈局文件main.xml,如下
- <?xml version="1.0" encoding="utf-8"?>
- <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/person_list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:drawSelectorOnTop="false"
- android:scrollbars="vertical" />
- </LinearLayout>
2、再定義一個ListView中要顯示的內容的佈局文件item.xml,如下
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal" >
- <TextView
- android:id="@+id/user_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
- <TextView
- android:id="@+id/user_age"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- </LinearLayout>
3、自定義一個適配器,使數據充填到對應的View中,該適配器繼承自abstract類BaseAdapter
- package com.ui.adapter.demo;
- import java.util.List;
- import android.content.Context;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.TextView;
- public class PersonAdapter extends BaseAdapter
- {
- // 上下文對象
- private Context context;
- // 要綁定的數據
- private List<Person> persons;
- // 自定義的內部類
- private ViewHolder holder;
- // 佈局文件加載器
- private LayoutInflater inflater;
- public PersonAdapter(Context context, List<Person> persons)
- {
- super();
- this.context = context;
- this.persons = persons;
- }
- /*取得綁定的數據的個數*/
- @Override
- public int getCount()
- {
- return persons.size();
- }
- /*取得指定位置的對象*/
- @Override
- public Object getItem(int position)
- {
- return persons.get(position);
- }
- /*取得綁定數據的索引*/
- @Override
- public long getItemId(int position)
- {
- return position;
- }
- /*取得指定位置的View*/
- @Override
- public View getView(int position, View convertView, ViewGroup parent)
- {
- holder = null;
- // 重生之大文豪www.dwhao.com獲取加載器對象
- inflater = LayoutInflater.from(context);
- if (null == convertView)
- {
- // 加載佈局文件
- convertView = inflater.inflate(R.layout.person, null);
- holder = new ViewHolder();
- // 獲取佈局文件中的各控件
- holder.nameText = (TextView) convertView
- .findViewById(R.id.user_name);
- holder.ageText = (TextView) convertView
- .findViewById(R.id.user_age);
- convertView.setTag(holder);
- }
- else
- {
- convertView.getTag();
- }
- // 給控件綁定數據
- holder.nameText.setText(persons.get(position).getName());
- holder.ageText.setText(persons.get(position).getAge());
- return convertView;
- }
- /**
- * 自定義內部類,類似於緩存的作用
- */
- private class ViewHolder
- {
- TextView nameText;
- TextView ageText;
- }
- }