在我的Firebase数据库中,每个uid都有一个lat和long的集合。
我使用Firebase Recyler适配器数据将我的数据列出到回收者视图中。
FirebaseRecyclerAdapter<Model, ViewHolder> firebaseRecyclerAdapter =
new FirebaseRecyclerAdapter<Model, ViewHolder>(Model.class, R.layout.row, ViewHolder.class, mRef) {
@Override
protected void populateViewHolder(final ViewHolder viewHolder, final Model model, int position) {
Double dist = distance(
myPosition.latitude,
myPosition.longitude,
Double.parseDouble(model.getLat()),
Double.parseDouble(model.getLon()));
Log.d("gs_distance", String.valueOf(dist));
viewHolder.setDetails(getApplicationContext(),
model.getLat(),
model.getLon(),
model.getGsname());
}
问题是我想按距离我的位置最近的距离对数据进行重新排序/排序,我已经可以获取每个latlng距我的位置的距离。我不知道是否有一种方法可以在数据进入populateViewHolder之前按其距离比较每个latlng。或者在将其插入recyclerview后对其进行排序?我真的不知道。
static double distance(double fromLat, double fromLon, double toLat, double toLon) {
Location loc1 = new Location("");
loc1.setLatitude(fromLat);
loc1.setLongitude(fromLon);
Location loc2 = new Location("");
loc2.setLatitude(toLat);
loc2.setLongitude(toLon);
float distanceInMeters = loc1.distanceTo(loc2);
return distanceInMeters / 1000; //convert to km
}