我想要的是什么;
我想获得一个包含BikeLocations
列表的弹出窗口。此时,我的代码有效。
它的意思是我的项目的所有id
都是从0升到例如{1}}。 5。
但是,当我删除BikeLocations
并添加新的BikeLocations
时。这些项目的id
不是从0到例如5,但是从5到5 10.这意味着我无法使用id
检索BikeLocation
的{{1}},因为这不会返回onClick(DialogInterface dialog, int item)
的{{1}},而是指向数组。
id
现在,我的问题是;有没有办法将某种BikeLocation
id附加到项目上?
答案 0 :(得分:0)
不直接,对话框只能显示单击项目的位置。 您可以根据位置为id维护自己的查找数组。当你填充你的arrData(包含位置字符串)时,在它旁边填充一个arrIds数组(包含id)。
final ArrayList<String> arrData = new ArrayList<String>();
final ArrayList<Integer> arrIds = new ArrayList<Integer>();
for (BikeLocation location : locations) {
int id = Integer.parseInt(location.getId().toString());
arrData.add(location.getTitle());
arrIds.add(id);
}
然后在onClickListener中,您可以使用以下内容获取id:
int id = arrIds.get(item -1);
(我不确定它应该是'item'还是'item -1'。我忘了如果对话框返回点击为零的位置或者不是......)
答案 1 :(得分:0)
如果将位置声明为final,则可以在onClick方法中访问该List。然后,您可以直接获取BikeLocation,而不需要该位置的ID。
@Override
public void onClick(DialogInterface dialog, int item) {
/*
* Locations loc = db.getLocation((item + 1)); LatLng
* testLocation = new LatLng(Float.valueOf(loc
* .getLattitude()), Float.valueOf(loc.getLongitude()));
* googleMap.addMarker(new MarkerOptions().position(
* testLocation).title(loc.getTitle()));
*/
BikeLocation loc = locations.get(item);
// locatie aanmaken
LatLng addLocation = new LatLng(loc.getLatitude(), loc
.getLongitude());
/*googleMap.addMarker(new MarkerOptions().position(
addLocation).title(loc.getTitle()));*/
addMarkerToMap(loc.getLatitude(), loc.getLongitude(),loc.getTitle(), false);
}