我尝试使用Builder构建AlertDialog。我的对话框必须有多个选项供用户选择。我在android开发者网站上发现我可以使用builder.setItems(int,DialogInterface.onClickListener)。我的问题是我试图传递一个List地址而不是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 ..中得到一个错误,说这个参数没有列表。
答案 0 :(得分:2)
SetItems
将Charsequence数组作为参数,因此您必须将List<Address>
转换为List<String>
,然后使用list.toarray()
答案 1 :(得分:1)
nandeesh 的回答的扩展
String [] addressStrings = new String [addresses.size()];
for(int i=0; i<addresses.size(); i++)
addressStrings[i] = addresses.get(i).toString();
您需要覆盖toString()
类的Address
方法,以便为String
个对象创建有意义的Address
表示。
现在在onClick()
方法中,您仍然可以通过给定索引访问Address
对象,因为addresses
列表和addressStrings
的大小和元素顺序数组是一样的。
Address selected = addresses.get(choosenAddress);