1

Builder を使用して AlertDialog を構築しようとしています。私のダイアログには、ユーザーが選択できる複数のオプションが必要です。builder.setItems(int, DialogInterface.onClickListener) を使用できる Android 開発者の Web サイトを見つけました。私の問題は、int の代わりに List アドレスを渡そうとしていることです。ユーザーにアドレスのリストからオプションを選択してもらいたい。説明のための私のコードは次のとおりです。

    private List<Address> addresses;

    protected void updateMap() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Pick an Address");

    builder.setItems(addresses, new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface arg0, int choosenAddress) {

            //address = addresses.get(choosenAddress); //choose result from the array

        }
    });

builder.setItems ..i で、この引数がリストをとらないというエラーが表示されます。

4

2 に答える 2

2

SetItemsパラメータとして Charsequence 配列を取るため、変換List<Address>してからList<String>使用する必要がありますlist.toarray()

于 2012-09-04T17:08:07.083 に答える
1

nandeeshの回答の拡張

String [] addressStrings = new String [addresses.size()];

for(int i=0; i<addresses.size(); i++)
    addressStrings[i] = addresses.get(i).toString();

オブジェクトの意味のある表現を作成するtoString()には、クラスのメソッドをオーバーライドする必要があります。AddressStringAddress

このメソッドでは、リストと配列のサイズと要素の順序が同じであるため、指定されたインデックスでオブジェクトにonClick()アクセスできます。AddressaddressesaddressStrings

Address selected = addresses.get(choosenAddress);
于 2012-09-04T17:39:30.443 に答える