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

问题描述 投票:0回答:1

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

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS83UlV4WC5wbmcifQ==” alt =“这是它的外观”>

我使用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
}
android firebase firebase-realtime-database firebaseui
1个回答
0
投票

您能够做到这一点吗?我需要帮助

© www.soinside.com 2019 - 2024. All rights reserved.