1

我正在尝试使用 Builder 构建一个 AlertDialog。我的对话框必须有多个用户可以选择的选项。我在 android 开发者网站上发现我可以使用 builder.setItems(int, DialogInterface.onClickListener)。我的问题是我试图传递一个列表地址而不是 int。我希望用户从地址列表中选择一个选项。这是我的说明代码:

    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 ..我得到一个错误,说这个参数没有列出。

4

2 回答 2

2

SetItems将字符序列数组作为参数,因此您必须转换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()方法Address,以创建有意义StringAddress对象表示。

现在在该onClick()方法中,您仍然可以通过给定索引访问对象,因为列表和数组Address的大小和元素顺序是相同的。addressesaddressStrings

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