如何使此字符串出现



我如何使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);
}
});

附言。所有变量都已正确初始化/声明,因为它没有编译/构建错误,因此可以正常编译,问题是我在问题中提出的问题

有几种方法可以做到这一点。 一种简单的方法是在onInfoWindowClick中使用thingslist并使用 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);
}
});

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

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

最新更新