В моей базе данных firebase у меня есть коллекция значений lat и long для каждого идентификатора пользователя.
Я использую данные адаптера ресайлера Firebase, чтобы вывести свои данные в представление переработчика.
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());
}
Проблема в том, что я хочу изменить порядок / отсортироватьДанные по ближайшим к дальним от моего местоположения, я уже могу получить расстояние на расстоянии каждого широты от моего местоположения.Я не знаю, есть ли способ сравнить каждое значение по их расстоянию непосредственно перед тем, как данные попадают в populateViewHolder.Или, может быть, отсортировать его после того, как вставили в переработчик?Я действительно не знаю.
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
}