Wenn Sie durch RecyclerView scrollen, gelangen Sie zu der Markierung von Google Map, die diesem Element entspricht. Wenn Sie auf Markierung auf Karte tippen, blättert RecyclerView zu dem Element. Ich benutze auch CardView und Snaphelper, aber ich werde sie nicht erklären.
Android Studio Kotlin Maps SDK for Android
RecyclerView -> Marker Die Reihenfolge in der RecyclerView wird anhand des Bildlaufbetrags beurteilt, und die Karte wird an die Position des Elements verschoben.
//recycler -> marker
recyclerView.addOnScrollListener(object :RecyclerView.OnScrollListener(){//Scrollen Sie, um zur Markierung zu gelangen
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {//Positionsbeurteilung nach dem Umfang des Bildlaufs
super.onScrolled(recyclerView, dx, dy)
val offset = recyclerView.computeHorizontalScrollOffset()
val itemWidth = cafeCardRoot.width
val edgeMargin = (recyclerView.width - itemWidth)/2
val position = (offset + edgeMargin) / (itemWidth + edgeMargin/2)
if (myCafesData[position].latitude == "" || myCafesData[position].longitude == "") {
return
}else{
val moveLatLng = LatLng(myCafesData[position].latitude.toDouble(),myCafesData[position].longitude.toDouble())
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(moveLatLng, 16F))
}
}
})
Marker -> RecyclerView Bestimmen Sie die Reihenfolge der Markierungen und scrollen Sie zu diesem Element.
//marker -> recycler
mMap.setOnMarkerClickListener(object : GoogleMap.OnMarkerClickListener{
override fun onMarkerClick(marker: Marker?): Boolean {
val markerPosition = marker?.position
var selectedMarker = -1
for (i in 0..myCafesData.size-1) {
if (myCafesData[i].latitude == "" || myCafesData[i].longitude == "") {
continue
} else {
if (markerPosition?.latitude == myCafesData[i].latitude.toDouble() && markerPosition.longitude == myCafesData[i].longitude.toDouble()) {
selectedMarker = i//Beurteilung der Markerposition
}
}
}
recyclerView.smoothScrollToPosition(selectedMarker)//scroll
return false
}
})
Da RecyclerView und Marker nicht direkt miteinander verbunden sind, können Sie die Größe des Markers nicht mit Recycler-> Marker ändern. Möchten Sie, dass die Artikeldaten RecyclerView- und Marker-Informationen enthalten?
Wir würden uns freuen, wenn Sie uns beibringen könnten, wie wir die oben genannten Probleme lösen können. Bitte!
Dieser Artikel ist ein Nachdruck aus meinem Blog. Wir aktualisieren die Programmierartikel. Bitte besuchen Sie uns. https://www.imagawahibana.com/
Recommended Posts