アダプタビューを使う(データのバインディング)

前述のように、ビューグループのなかにはUIを持つものがあります。これらは通常AdapterViewのサブクラスです。Gallery(画像選択ウィジェット)やListView(ビューを一覧する)などのサンプルがあります。これらは一般的に、2つのジョブを持ちます。

レイアウト上にデータを埋め込む

これは通常、クラスに対してどこからか(コード内のリストだったり、デバイスの上のデータベースからだったりします)データを取得してくるAdapterをバインドすることにより実現出来ます。

// Get a Spinner and bind it to an ArrayAdapter that
// references a String array.
private String[] fruit = {"apples", "oranges", "lemons"}
Spinner s1 = (Spinner)findViewById(R.id.fruitlist);
s1.setAdapter(new ArrayAdapter<String>(this, mStrings));
 
// Load a Spinner and bind it to a data query.
private String[] cols={android.provider.Contacts.PeopleColumns.NAME};
private Cursor cur = managedQuery(android.provider.Contacts.People.CONTENT_URL, cols, null, null);
s2.setAdapter(new CursorAdapter(cur, this));

ユーザの選択を処理する

これは、クラスのAdapterView.OnItemClickListenerメンバをリスナに設定し、選択の変更通知を受け取ることで実現出来ます。

// Create a message handling object as an anonymous class.
private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
    public void onItemClick(AdapterView parent, View v, int position, long id)
    {
        // Display a messagebox.
        showAlert("You've got an event", "Clicked me!", "ok", false);
    }
};

// Now hook into our object and set its onItemClickListener member
// to our class handler object.
mHistoryView = (ListView)findViewById(R.id.accept_button);
mHistoryView.setOnItemClickListener(mMessageClickedHandler);