如何使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。所有变量均已正确初始化/声明,因为没有编译/构建错误,因此可以正常编译,问题出在我在问题中问的内容
答案 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);
}
});