Прокрутка вниз окна обзора в mvvm - PullRequest
0 голосов
/ 07 июня 2018

Я реализую mvvm и привязку данных в моем приложении.Я использую нижеприведенный код для установки адаптера

@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);

Откуда я вызываю этот метод и каков наилучший метод обращения к представлению реселлера для вызова этого метода?

1 Ответ

0 голосов
/ 07 июня 2018

Я нашел ответ после некоторых проб и ошибок.Это может быть достигнуто с помощью 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);
}
...