在填充之前,firebaserecycleradapter对数据进行排序/比较/重新排序

时间:2018-11-14 21:01:19

标签: android firebase firebase-realtime-database firebaseui

在我的Firebase数据库中,每个uid都有一个lat和long的集合。

Here is how it looks

我使用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
}

0 个答案:

没有答案