我创建了一个警报对话框,显示用户搜索过的地址列表视图。但是当警报对话框显示列表视图项时,我会重复相同的项目,所以如果我有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();
}
我已经无数次调试了,地址集合总是显示独特的项目,我似乎没有覆盖/替换它们,所以我完全迷失了正在发生的事情。
任何帮助将不胜感激
亲切的问候
答案 0 :(得分:0)
为什么在Adapter中使用for循环?不需要循环。你可以直接使用
Address thisAddress = addresses.get(position);
适配器将为 getCount()方法返回的计数数创建视图。因此,如果您返回正确的计数,它将自动为所有地址创建视图。
public int getCount(){
return addresses.size();
}