Например, если заблокировали текущее видео, его нужно удалить из рекомендаций тоже. Или если поставили звездочку, хорошо, чтобы эта звездочка и внизу в рекомендациях появилась.
Ровно так сейчас и происходит почти для всех вариантов рекомендаций (любимое, истрия, фильтрованный плейлист и т.п.). Но не для случайных рекомендаций, которые октываются по простому клику на ролику из большинства списков. Т.к. при любом изменении в базе данных PagedListAdapter со случайными рекомендациями обновить не только значения элементов, но и выполнить заново сам запрос, в котором order by RANDOM вернет вообще другие элементы.
videoItemsLiveData.observe(this, new Observer<PagedList<VideoItem>>() {
@Override
public void onChanged(@Nullable PagedList<VideoItem> videos) {
adapter.submitList(videos);
}
});
использовать PagedListAdapter, отключив его от базы данных (например, убрать метод videoItemsLiveData.observe). Минус в том, без слушателя измений опять получаем ситуацию с ArrayAdapter, с которой начинали. Но может быть как-нибудь получится ловить одни события (изменения самих элементов), но игнорировать другие (не генерить заново список). Дополнительный плюс этого подхода в том, что в ArrayAdapter cейчас фиксированное количество элементов (в настройках ConfigOptions - 200 штук), а PagedListAdapter даст все элементы из базы данных в одном списке.
здесь может быть полезно:
Еще заметил: если в рекомендациях в режиме "любимое" убрать звезду с ролика, он исчезнет из рекомендаций, а если поставить обратно (не переключая ролик), то он обратно не появится
Например, если заблокировали текущее видео, его нужно удалить из рекомендаций тоже. Или если поставили звездочку, хорошо, чтобы эта звездочка и внизу в рекомендациях появилась.
Всё могло бы разрулиться автоматом, если использовать PagedListAdapter вместо ArrayAdapter https://github.com/sadr0b0t/yashlang/issues/136
Ровно так сейчас и происходит почти для всех вариантов рекомендаций (любимое, истрия, фильтрованный плейлист и т.п.). Но не для случайных рекомендаций, которые октываются по простому клику на ролику из большинства списков. Т.к. при любом изменении в базе данных PagedListAdapter со случайными рекомендациями обновить не только значения элементов, но и выполнить заново сам запрос, в котором order by RANDOM вернет вообще другие элементы.
Т.о. можно пробовать сделать две вещи - одну из:
обновлять ArrayAdapter вручную, подключившись к базе данных слушать события, как это делает PagedListAdapter+LiveData (если получится) https://developer.android.com/topic/libraries/architecture/livedata#the_advantages_of_using_livedata что-то в таком духе:
использовать PagedListAdapter, отключив его от базы данных (например, убрать метод videoItemsLiveData.observe). Минус в том, без слушателя измений опять получаем ситуацию с ArrayAdapter, с которой начинали. Но может быть как-нибудь получится ловить одни события (изменения самих элементов), но игнорировать другие (не генерить заново список). Дополнительный плюс этого подхода в том, что в ArrayAdapter cейчас фиксированное количество элементов (в настройках ConfigOptions - 200 штук), а PagedListAdapter даст все элементы из базы данных в одном списке.