将标记添加到AlertDialog

时间:2013-11-14 15:31:49

标签: java android

我想要的是什么; 我想获得一个包含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附加到项目上?

2 个答案:

答案 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);

        }