当我的MapActivity打开时,我从我的Firebase数据库中请求包含某些酒店的这些数据的一些信息,之后它会创建带有加载数据的标记..我尝试使用片段,但如果我的评论太长,则不能显示..
@Override
public void onLoaded(String name, double lat, double lon, String author, float foodRating,float serviceRating,float comfortRating,float averageRating, String review) {
reviewList.add(review);
LatLng position = new LatLng(lat, lon);
marker = mGoogleMap.addMarker(new MarkerOptions().title(name)
.position(position)
.snippet("REVIEW: \n" + review + "\n").snippet(String.valueOf(averageRating)));
}
所以,我用它的方法实现了InfoAdapter监听器:
@Override
public View getInfoWindow(Marker marker) {
View view = LayoutInflater.from(this).inflate(R.layout.info_window, null, false);
TextView reviewTextView = (TextView) view.findViewById(R.id.review);
reviewTextView.setText("");
return view;
}
现在我想在每次单击不同的标记时更改reviewTextView中的文本,以显示每个标记(每个酒店的)评论......
我尝试将onLoaded方法中的所有评论存储到名为reviewList的ArrayList中,但现在我不确定如何为某个标记提取这些评论..
答案 0 :(得分:0)
使用Map
代替ArrayList
,并使用Map
s'将评论放入onLoaded()
方法中的Marker
。 ID作为键。在getInfoWindow()
方法中,从Map
检索审核,其中包含传递的Marker
ID。
private Map<String, String> reviewMap = new HashMap<>();
...
@Override
public void onLoaded(String name, double lat, double lon, String author,
float foodRating, float serviceRating, float comfortRating,
float averageRating, String review) {
LatLng position = new LatLng(lat, lon);
marker = mGoogleMap.addMarker(new MarkerOptions().title(name)
.position(position)
.snippet("REVIEW: \n" + review + "\n")
.snippet(String.valueOf(averageRating)));
reviewMap.put(marker.getId(), review);
}
...
@Override
public View getInfoWindow(Marker marker) {
View view = LayoutInflater.from(this).inflate(R.layout.info_window, null, false);
TextView reviewTextView = (TextView) view.findViewById(R.id.review);
String review = reviewMap.get(marker.getId());
reviewTextView.setText(review);
return view;
}