Как изменить порядок списка LiveData? - PullRequest
0 голосов
/ 25 октября 2019

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

Список борцов хранится в базе данных комнат, по умолчанию я запрашиваю в базе данных всех борцов в порядке возрастания.

WrestlersDao

    @Query("SELECT * FROM wrestler_table WHERE ORDER BY mFirstName :sortOrder 
    LIMIT :size")
    LiveData<List<WrestlersEntity>> getAllWrestlers(int size, String sortOrder);

MainActivityViewModel

private LiveData<List<WrestlersEntity>> mWrestlersList;

Список mWrestlersList отображается в моем RecyclerView.

MainActivity

mMainActivityViewModel.getWrestlersList().observe(this, wrestlersEntities -> {
    adapter.submitList(wrestlersEntities);
});

Я думал, что смогу снова запросить базу данных, если бы мне пришлось создать новый запрос в DAO, чтобы изменить порядок списка LiveData, яЯ не уверен, есть ли способ изменить ASC программно в исходном запросе.

Другой вариант, который может показаться работающим, - это использовать Transformation.map, но я изо всех сил пытаюсь понять эту концепцию. ,

MainActivityViewModel

Transformations.map(mWrestlersList) {
    Collections.shuffle((List<?>) mWrestlersList);
}

Любая помощь здесь будет принята с благодарностью.

1 Ответ

0 голосов
/ 25 октября 2019

Передать имя столбца и порядок сортировки в качестве параметров;например. для сортированной нумерации страниц:

// getAllWrestlers("mFirstName", "ASC", 50, 0);
@Query("SELECT * FROM wrestler_table ORDER BY :columnName :sortOrder LIMIT :limit OFFSET :offset")
LiveData<List<WrestlersEntity>> getAllWrestlers(String columnName, String sortOrder, int limit, int offset);

Потому что, если не передать их в качестве параметров, нельзя реально управлять окном результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...