Как отсортировать RecyclerView в порядке возрастания в соответствии с?

#android

#Android

Вопрос:

Я получаю расстояние между двумя местоположениями и показываю его на вид переработчика, это скриншот :

введите описание изображения здесь

Я попытался отсортировать RecyclerView в порядке возрастания(сначала кратчайшее расстояние) , но это не работает. Это мой код :

 @Override  public void onBindViewHolder(@NonNull ViewHolder holder, int position) {  Collections.sort(partnerModelList, new Comparatorlt;PartnerModelgt;() {  @Override  public int compare(PartnerModel lhs, PartnerModel rhs) {  return String.valueOf(km).substring(0, 5) .compareTo(String.valueOf(km).substring(0, 5));   }  });  notifyDataSetChanged(); }  

Как этого добиться, пожалуйста, дайте мне знать . Миллионы благодарностей

Комментарии:

1. Сначала вам нужно отсортировать данные в списке источников данных (список, в котором содержатся данные для адаптера recyclerview). Как только вы отсортируете его в списке, адаптер отобразит данные в соответствии с вашим выбором. Но вы пытаетесь отсортировать данные после того, как адаптер recyclerview начнет привязывать данные к своему держателю просмотра.

Ответ №1:

то, что вы делаете, — это сортировка данных «на более позднем этапе», т. Е. когда данные привязываются к держателю представления. Все, что вам нужно сделать, это сначала отсортировать данные в соответствии с требованиями, а затем привязать их к владельцу представления. в идеале предварительная обработка данных должна выполняться до их передачи адаптеру, но вы также можете выполнить эти операции в конструкторе адаптера или любой другой функции, которая вызывается перед onbindViewHolder методом адаптера, а затем уведомить адаптер вызовом notifyDataSetChanged() или notifyItemChanged()

Ответ №2:

Вы должны выполнить сортировку данных следующим образом:

 ... list.sort() yourRecyclerViewAdapter.setList(list) ...