Насколько я могу судить, причина исчезновения значка поиска связана с вызовом ObservableList.clear (), а затем ObservableList.addAll (*)
Таким образом, исчезновение происходит в открытом состоянии, затем повторное появление происходит в addAll.
Поскольку обратные вызовы в адаптере включаются при обоих вызовах, я догадываюсь, что он оживляет представление, а затем показывает, когда вызывается addAll.
Я подтвердил это, не выполняя действие List.clear (), а вместо этого в вашем слушателе textChange просто добавляя больше представлений в список.
Я не уверен, как бы вы очистили и добавили элементы в список без анимации очистки, возможно, есть некоторые параметры, которые вы можете переключать в RecyclerAdapter, чтобы игнорировать удаление представлений или не анимировать запись представлений?
Мой скорректированный код в вашем обратном вызове для класса PlayersListVM
class PlayersListVM {
val filteredVms: ObservableList<ViewModel> = ObservableArrayList<ViewModel>()
val showing = PlayerVM(isShowing = true)
val missing = PlayerVM()
init {
filteredVms.add(showing)
}
fun onQueryChanged(newText: String) {
if (filteredVms.size % 2 == 1) filteredVms.add(missing)
else filteredVms.add(showing)
}
}