Как сделать собственный адаптер для извлечения из базы данных Firebase и сортировки на стороне клиента, а затем заполнить адаптер - PullRequest
0 голосов
/ 07 января 2019

У меня есть lat и lng, хранящиеся в базе данных firebase. Теперь я хочу получить их, а затем вычислить расстояние между моим текущим местоположением и этими точками, а затем отсортировать их в порядке возрастания расстояния в адаптере

Я могу получить широту и долготу, рассчитать расстояние и заполнить адаптер просмотра базы данных пожарной базы. Но в этом адаптере элементы не сортируются по расстоянию. Я хочу отсортировать их по расстоянию, вычисленному после извлечения предмета.

Код в FirebaseRecyclerAdapter внутри onBindViewHolder

lat = mLastLocation.getLatitude();
lng = mLastLocation.getLongitude();
lat1 = Double.parseDouble(model.getMylat());
lng1 = Double.parseDouble(model.getMylng());
loadLocationForThisUser(lat, lng, lat1, lng1);
holder.txt_distance.setText(distance);

И код для расчета расстояния

private void loadLocationForThisUser(Double lat, Double lng, Double lat1, Double lng1) {


    //Create location from user coordinates
    currentUser1 = new Location("");
    currentUser1.setLatitude(lat);
    currentUser1.setLongitude(lng);

    //Create location from friend coordinates
    friend1 = new Location("");
    friend1.setLatitude(lat1);
    friend1.setLongitude(lng1);


    distanceNumeric = (int) (currentUser1.distanceTo(friend1)/1000);
    Log.i("distanceNumeric", String.valueOf(distanceNumeric));

    distance = (new 
DecimalFormat("#.#").format((currentUser1.distanceTo(friend1)) / 1000)+ " 
kms");
}

В настоящее время выходные данные представляют собой элементы, которые заполняются без какого-либо порядка сортировки на основе рассчитанного расстояния. Я ожидаю, что адаптер будет заполнен элементами в порядке увеличения расстояния, которое было рассчитано.

...