我有一个RecyclerView,可以在地图上显示项目。其中一些项目有位置,我想在地图上为它们设置标记。一旦用户滚动并且项目不再可见,我将删除标记,然后尽可能添加新标记。
这是我的地图片段初始化:
mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
在这里我初始化地图:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
标记可以这样添加:
LatLng sydney = new LatLng(-33.852, 151.211);
googleMap.addMarker(new MarkerOptions().position(sydney)
.title("Marker in Sydney"));
我知道如何获取第一个和最后一个可见项目:
LinearLayoutManagerlayoutManager = ((LinearLayoutManager)mRecyclerView.getLayoutManager());
int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition();
int lastVisiblePosition = layoutManager.findLastVisibleItemPosition();
并基于此我控制显示哪些标记。
不幸的是,我不知道将所有这些链接在一起的位置。有没有人有任何想法?
答案 0 :(得分:0)
无法完全评估您的问题。但如果它属于这些情况。
案例1)如果是第一种情况。 - 每次使用addOnScrollListener获取更新的位置 滚动列表
mRecyclverViewEvent.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
firstVisiblePosition = layoutManager.findFirstVisibleItemPosition();
lastVisiblePosition = layoutManager.findLastVisibleItemPosition();
updateMapMarker();
}
})