如何从字符串列表更改信息 window 中的文本视图文本
how to change textview's text in info window, from list of Strings
当我的 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 中,但现在我不确定如何针对某个标记提取这些评论..
使用 Map
而不是 ArrayList
,并使用 Marker
的 ID 将评论放入 onLoaded()
方法中的 Map
作为钥匙。在 getInfoWindow()
方法中,使用传入的 Marker
的 ID 从 Map
中检索评论。
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;
}
当我的 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 中,但现在我不确定如何针对某个标记提取这些评论..
使用 Map
而不是 ArrayList
,并使用 Marker
的 ID 将评论放入 onLoaded()
方法中的 Map
作为钥匙。在 getInfoWindow()
方法中,使用传入的 Marker
的 ID 从 Map
中检索评论。
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;
}