Android列表视图,在显示相同项目的警报对话框中

时间:2016-10-15 17:54:15

标签: android listview alertdialog

我创建了一个警报对话框,显示用户搜索过的地址列表视图。但是当警报对话框显示列表视图项时,我会重复相同的项目,所以如果我有6个地址,我将在地址集合中重复6次重复项目3。

我已经调试了,地址集合确实显示了唯一的项目,但是在创建对话框和为listview设置适配器之间出现了问题。我认为这与AddressRowAdapter类中的convertView有关,但我不太确定。

这是代码。

这是SearchLocation类,resource_address_listview包含一个ListView小部件,它位于RelativeLayout

formData.append("testfield", "some string");

以下是AddressRowAdapter的代码,我相信这里有些错误,但我看不出代码有什么问题。

公共类AddressRowAdapter扩展了ArrayAdapter {

//set our adapter
AddressRowAdapter dataAdapter = new AddressRowAdapter(getActivity(), addressList);

//Create Address Selection Dialog
AlertDialog.Builder addressSelectionDialog = new AlertDialog.Builder(getActivity());
//Get the layout file
LayoutInflater alertDialogInflater = getActivity().getLayoutInflater();
//Get our custom view
View getAlertDialogView = alertDialogInflater.inflate(R.layout.resource_address_listview,null);

//Set our custom view
addressSelectionDialog.setView(getAlertDialogView);

//Set up, confirmation buttons and events for dialog
addressSelectionDialog.setPositiveButton("Select", new AlertDialogPositiveButtonClick());
addressSelectionDialog.setNegativeButton("Cancel", new AlertDialogCancelButtonClick());

//Set up our adapter

//Get our list view
listViewAddressList = (ListView)getAlertDialogView.findViewById(R.id.listViewAddressList);
listViewAddressList.setAdapter(dataAdapter);

//listViewAddressList.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);//Single choice mode, radio buttons
listViewAddressList.setOnItemClickListener(new AddressListViewOnItemClick());//Set our item click listener.

//Create and show dialog
createDialog = addressSelectionDialog.create();
createDialog.show();

}

我已经无数次调试了,地址集合总是显示独特的项目,我似乎没有覆盖/替换它们,所以我完全迷失了正在发生的事情。

任何帮助将不胜感激

亲切的问候

1 个答案:

答案 0 :(得分:0)

为什么在Adapter中使用for循环?不需要循环。你可以直接使用

Address thisAddress = addresses.get(position);

适配器将为 getCount()方法返回的计数数创建视图。因此,如果您返回正确的计数,它将自动为所有地址创建视图。

public int getCount(){
     return addresses.size();
}