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

Мне нужно реализовать функцию приоритетности. То есть как оно работает, при добавлении заметок пользователь сможет выбрать важность этой заметки, и соответственно самая важная заметка будет располагаться в самом верху RecyclerView, а самая низкая по приоритетности, в самом низу. Как это сделать? Если есть источники поделитесь пожалуйста. Долго искал, не могу найти ответ Здесь на картинке показана возможность выбрать важность заметки


Ответы (2 шт):

Автор решения: Vlad Orlinskas

В модель заметки добавьте поле priority. Перед предоставлением RecyclerView.Adapter выполните сортировку элементов списка notes.sortBy { it.priority }. Значение приоритета лучше сделать численным, вы можете зарание задать константы типа val const MAX = 3 Но я бы сделал перечисление

enum Priority(val code: Int) {
   MAX(1),
   MIN(0)
}
→ Ссылка
Автор решения: Barmaley

По-моему все достаточно просто, допустим у вас есть ваш адаптер заданий (Task):

public class TasksAdapter extends
    RecyclerView.Adapter<TaskAdapter.ViewHolder> {

    // blah-blah, пропускаем декларацию ViewHolder и т.д.

    private List<Task> mTasks;
}

По сути вам надо сделать сортировку List<Task> по полю priority, которое надо завести.

Что-то навроде такого:

Collections.sort(mTasks, new Comparator<Task>() {
        @Override
        public int compare(Task lTask, Task rTask) {
            return lTask.getPriority() > rTask.getPriority() ? -1 : 1;
        }
    });

После чего надо не забыть вызвать на адаптере notifyDatasetChanged()

→ Ссылка