如何从字符串列表更改信息 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;
}