【问题标题】:Scrolling down recyclerview to bottom in mvvm在mvvm中向下滚动recyclerview到底部
【发布时间】:2018-06-07 08:14:06
【问题描述】:

我正在我的应用程序中实现 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}"/>

适配器包含在视图模型中

我需要的是我想打电话

recyclerView.scrollToPosition(items.size() - 1);

我从哪里调用这个方法和 引用 recyclerview 来调用此方法的最佳做法是什么?

【问题讨论】:

    标签: java android mvvm android-recyclerview android-databinding


    【解决方案1】:

    经过反复试验,我找到了答案。 这可以通过使用 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 2021-03-28
      相关资源
      最近更新 更多