java - 在mvvm中向下滚动recyclerview到底部
问题描述
我在我的应用程序中实现 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 时都应将其设置为 (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);
}
推荐阅读
- java - 打印 IntStream 平均结果
- django - 使用通用 UpdateView 始终编辑单个配置对象
- python - 使用 asyncio.Queue 进行生产者-消费者流
- android - 使用最新的 NDK (r18) 在 Android 上启用 C++17
- python - 试图用python构造一个贪心算法
- mongodb - 如何在mongodb中查看嵌入文档的对象
- c - 在C中重复数组“i”中的每个元素
- python - 将整数列表转换为与另一个列表中的位置兼容的内容创建刽子手游戏时
- python - 从数据框中选择随机值而不替换
- ember.js - 如何更新 Ember 模板中辅助主体内的变量