自定义InfoWindow只显示android中列表的最后一个元素

时间:2014-10-01 17:03:32

标签: android google-maps infowindow

public void marker1(final List<String> listName,
        final List<String> listIllness, final List<String> listIC,
        final List<String> listElderlyimage, List<String> listArduinomac,
        List<String> listLat, List<String> listLong) {


    Log.e("", Integer.toString(listName.size()));
    for (int i = 0; i < listName.size(); i++) {
        name = listName.get(i);
        ic = listIC.get(i);
        illness = listIllness.get(i);
        Double Lat = Double.parseDouble(listLat.get(i));
        Double Long = Double.parseDouble(listLong.get(i));
        MarkerOptions marker = new MarkerOptions().position(new LatLng(Lat,
                Long));

        marker.icon(BitmapDescriptorFactory
                .defaultMarker(BitmapDescriptorFactory.HUE_VIOLET));


        infoWindowAdapter = new MarkerInfoWindowAdapter();
        googleMap.setInfoWindowAdapter(infoWindowAdapter);
        infoWindowAdapter.setName(name);
        infoWindowAdapter.setIC(ic);
        infoWindowAdapter.setIllness(illness);
        googleMap.addMarker(marker);


    }// for loop

}// marker1

这是我使用的自定义infowindowadapter

class MarkerInfoWindowAdapter implements InfoWindowAdapter {

    private View inflatedView;
    private String name, ic, illness;

    public void setName(String name) {
        this.name = name;
    }

    public void setIC(String ic) {
        this.ic = ic;
    }

    public void setIllness(String illness) {
        this.illness = illness;
    }

    MarkerInfoWindowAdapter() {
        inflatedView = getActivity().getLayoutInflater().inflate(
                R.layout.custom_info_contents, null);

    }

    @Override
    public View getInfoContents(Marker marker) {
        setInfo(marker, inflatedView);
        return inflatedView;
    }

    @Override
    public View getInfoWindow(Marker marker) {
        setInfo(marker, inflatedView);
        return inflatedView;
    }

    private void setInfo(Marker marker, View view) {
        TextView txtname = (TextView) view
                .findViewById(R.id.txtPatientName);
        TextView txtIC = (TextView) view.findViewById(R.id.txtIC);
        TextView txtIllness = (TextView) view.findViewById(R.id.txtIllness);
        txtname.setText(name);
        txtIC.setText(ic);
        txtIllness.setText(illness);
        Log.e("<>", txtname.toString());
    }
}

您好,我不确定为什么每当我点击标记时,它都会继续显示相同的人物信息。我不确定哪里出了问题。请帮我!谢谢。

1 个答案:

答案 0 :(得分:1)

  

它不断显示相同的人物信息

这是因为MarkerInfoWindowAdapter中只有一个“人员信息”,而您忽略了传递给Marker的{​​{1}}。如果您想根据getInfoWindow()填充信息窗口,则需要查找与该Marker相关联的信息。 This sample application显示了根据Marker ID查找模型数据。

另外,请勿同时实施MarkergetInfoWindow()。只有一个会被使用 - getInfoContents()如果它返回非getInfoWindow()值,则为null。在这种情况下,由于您总是从getInfoContents()返回非null值,因此永远不会调用getInfoWindow()

另外,请勿为每个getInfoContents()创建InfoWindowAdapter。只使用了一个Marker。在您的情况下,它将是您创建的最后一个。