如何使此字符串出现

时间:2018-10-21 15:07:36

标签: java android

如何使String time正确显示在每个标记中,它是从JSON文件以及标记的名称,描述,经/纬度,图像URL获取的,但是时间是唯一的不会针对每个标记动态显示,而是仅从JSON中获取一个时间字符串,并在所有标记中显示相同的时间字符串,我该怎么做,以使每个标记的各自时间都应按原样出现? >

我认为问题出在time = thing.gettime();行,但我找不到解决方法。

这是我代码的这一部分,我真的不知道该如何解决。

for (int i = 0; i < thingslist.size(); i++) {
    Things thing = thingslist.get(i);
    googleMaps.addMarker(new MarkerOptions()
            .position(new LatLng(Double.valueOf(thing.getLatitude()), Double.valueOf(thing.getLongitude())))
            .snippet(thing.getDescricao())
            .icon(BitmapDescriptorFactory.fromResource(MudancaIconeMarker(thing.getTipo())))
            .title(thing.getName()))
            .setTag(thing.getPhoto());

    time = thing.getTime(); //this



}

googleMaps.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
    @Override
    public void onInfoWindowClick(Marker marker) {
        Intent intent = new Intent(getActivity(), ActivityDetails.class);

        ActivityDetails.Info.id = marker.getId();
        ActivityDetails.Info.photoURL = marker.getTag().toString();

        TabInfos.name = marker.getTitle();
        TabInfos.id = marker.getId();
        TabInfos.description = marker.getSnippet();
        TabInfos.time = time; // this

        for (int i = 0;i<24;i++ ){
            if (marker.getId().equals("m"+i)){ ActivityDetails.Info.num=i;TabInfos.num=i;}
        }
        TabMap.this.startActivity(intent);
    }
});

我也尝试过此方法,但未能解决问题:

public void setTime(String time) {
    this.time = time;
}

public String getTime() {
    return time;
}

@Override
public void onMapReady(final GoogleMap googleMapas) {
for (int i = 0; i < thingslist.size(); i++) {
    Things thing = thingslist.get(i);
    googleMaps.addMarker(new MarkerOptions()
            .position(new LatLng(Double.valueOf(thing.getLatitude()), Double.valueOf(thing.getLongitude())))
            .snippet(thing.getDescricao())
            .icon(BitmapDescriptorFactory.fromResource(MudancaIconeMarker(thing.getTipo())))
            .title(thing.getName()))
            .setTag(thing.getPhoto());

        setTime(thing.getTime()); //here


}

googleMaps.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
    @Override
    public void onInfoWindowClick(Marker marker) {
        Intent intent = new Intent(getActivity(), ActivityDetails.class);

        ActivityDetails.Info.id = marker.getId();
        ActivityDetails.Info.photoURL = marker.getTag().toString();

        TabInfos.name = marker.getTitle();
        TabInfos.id = marker.getId();
        TabInfos.description = marker.getSnippet();
        AbaInfos.time = getTime();   //here


        for (int i = 0;i<24;i++ ){
            if (marker.getId().equals("m"+i)){ ActivityDetails.Info.num=i;TabInfos.num=i;}
        }
        TabMap.this.startActivity(intent);
    }
});

PS。所有变量均已正确初始化/声明,因为没有编译/构建错误,因此可以正常编译,问题出在我在问题中问的内容

2 个答案:

答案 0 :(得分:0)

您没有为标记创建“时间”字段,只有一个名为“时间”的全局变量。 你不应该有这样的东西吗?

 googleMaps.addMarker(new MarkerOptions().....setTime(thing.getTime()));

答案 1 :(得分:0)

有几种方法可以做到这一点。一种简单的方法是使用onInfoWindowClick中的事物列表,并使用TAG来索引事物列表,如下所示:

    for (int i = 0; i < thingslist.size(); i++) {
        Things thing = thingslist.get(i);
        googleMaps.addMarker(new MarkerOptions()
                .position(new LatLng(Double.valueOf(thing.getLatitude()), Double.valueOf(thing.getLongitude())))
                .snippet(thing.getDescricao())
                .icon(BitmapDescriptorFactory.fromResource(MudancaIconeMarker(thing.getTipo())))
                .title(thing.getName()))
                .setTag(String.valueOf(i));

    }

    googleMaps.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
        @Override
        public void onInfoWindowClick(Marker marker) {
            Intent intent = new Intent(getActivity(), ActivityDetails.class);
            int index=Integer.valueOf(marker.getTag());
            ActivityDetails.Info.id = marker.getId();
            ActivityDetails.Info.photoURL =thingslist.get(index).getPhoto(); 

            TabInfos.name = marker.getTitle();
            TabInfos.id = marker.getId();
            TabInfos.description = marker.getSnippet();
            TabInfos.time = thingslist.get(index).getTime();

            for (int i = 0;i<24;i++ ){
                if (marker.getId().equals("m"+i)){ ActivityDetails.Info.num=i;TabInfos.num=i;}
            }
            TabMap.this.startActivity(intent);
        }
    });