首页 > 解决方案 > 如何使这个字符串出现

问题描述

如何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。所有变量都已正确初始化/声明,因为它没有编译/构建错误,它可以正常编译,问题就是我在问题中提出的问题

标签: javaandroid

解决方案


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

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

推荐阅读