web-dev-qa-db-ja.com

Androidのコンボボックス

Androidでのアクセスにコンボボックスのようなものが必要です。名前ごとに顧客を選択したいのですが、バックグラウンドではIDを選択する必要があります。実行する方法?

14
Mark

Androidコンボボックスはスピナーと呼ばれます。それでも、gnuguは自分のブログにコンボボックスの独自の実装を投稿しています。 http://www.gnugu.com/node/57 =

スピナーの簡単な例は次のようになります。まず、次のようなコードでXMLコードを編集します

Spinner Android:id="@+id/Spinner01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"

あなたのJavaコードはこのようなものを含むべきであり、オプションは非常に直感的です。Eclipseを使用している場合、いくつかのオプションを提案します

public class SpinnerExample extends Activity {
    private String array_spinner[];
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // Here come all the options that you wish to show depending on the
        // size of the array.
        array_spinner=new String[5];
        array_spinner[0]="option 1";
        array_spinner[1]="option 2";
        array_spinner[2]="option 3";
        array_spinner[3]="option 4";
        array_spinner[4]="option 5";
        Spinner s = (Spinner) findViewById(R.id.Spinner01);
        ArrayAdapter adapter = new ArrayAdapter(this,
        Android.R.layout.simple_spinner_item, array_spinner);
        s.setAdapter(adapter);
    }
}
25
eLobato

お客様IDを選択したアイテムにリンクする必要性に対する代替ソリューション。

テキストを含む単純なセレクターを作成するには、配列リソースを使用します。SpinnerをXMLでセットアップします。

<Spinner Android:id="@+id/spinner"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:entries="@array/colors"/>

スピナーにリンクされたデータがさらに必要な場合は、オブジェクトを使用してスピナーにデータを追加できます。 ArrayAdapterのデフォルトの機能は、任意のオブジェクトでtoString()を呼び出し、それをビューに渡すことです。

if (item instanceof CharSequence) {
    text.setText((CharSequence)item);
} else {
    text.setText(item.toString());
}

オブジェクトにtoString()を実装すると、スピナーで正しく表示されます。次に、配列からデータを取得するには、ハンドラーをItemSelectedに追加して、シード配列またはArrayAdapterからオブジェクトを取得します。

ArrayAdapter adapter = new ArrayAdapter(activity, Android.R.layout.simple_spinner_item, arrayOfObjects);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
    {
        Log.d(arrayOfObjects[position]._id);
    }

});
2
Steven