Я реализую mvvm и привязку данных в своем приложении. Я использую приведенный ниже код для установки адаптера recyclerview
@BindingAdapter({"bind:setAdapter"})
public static void setUpAdapter(RecyclerView recyclerView, RecyclerView.Adapter adapter) {
recyclerView.setAdapter(adapter);
}
и макет содержит
<android.support.v7.widget.RecyclerView
android:layout_width = "0dp"
android:layout_height = "0dp"
tools:itemCount = "2"
tools:listitem = "@layout/chat_bubble_left"
app:layoutManager = "android.support.v7.widget.LinearLayoutManager"
app:setAdapter = "@{chatViewModel.chatMessageAdapter}"/>
Адаптер содержится внутри viewModel
Что мне нужно, так это то, что я хочу вызвать
recyclerView.scrollToPosition(items.size() - 1);
Откуда я вызываю этот метод и Как лучше всего ссылаться на recyclerview для вызова этого метода?




Я нашел ответ после некоторых проб и ошибок. Это может быть выполнено с помощью observableInt, который должен каждый раз устанавливать значение (list-1) при обновлении списка.
public ObservableInt scrollTo=new ObservableInt();
....
list.addAll(templist);
chatMessageAdapter.notifyItemInserted(list.size()-1);
chatMessageAdapter.scrollTo.set(list.size()-1);
и использовать
app:scrollTo = "@{chatViewModel.chatMessageAdapter.scrollTo}
в элементе RecyclerView в макете
установить адаптер привязки как
@BindingAdapter({"bind:scrollTo"})
public static void scrollTo(RecyclerView recyclerView, int position) {
recyclerView.scrollToPosition(position);
}