- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景:
我正在通过添加 RecyclerView
函数来使用 addOnScrollListener
实现分页逻辑。
面临的问题:
当 RecyclerView 适配器加载 dy 值为 0 时调用 onScrolled
方法一次。但是,当列表在滚动时到达其末尾时,不会触发 onScrolled
方法,而 onScrollStateChanged
被正确触发。
这是我的适配器:
HistoryAdapter(Context context, ArrayList<HistoryItem> items, RecyclerView recyclerView) {
inflater = LayoutInflater.from(context);
this.items = items;
preferences = PreferenceManager.getDefaultSharedPreferences(context);
this.context = context;
this.recyclerView = recyclerView;
final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
Timber.w("onScrolled.. %s", dy);
if (dy > 0) {
totalItemCount = linearLayoutManager.getItemCount();
lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
Timber.e("totalItemCount: %s", totalItemCount);
Timber.e("lastVisibleItem: %s", lastVisibleItem);
if (!isLoading && totalItemCount <= (lastVisibleItem + 1)) {
Timber.i("End reached...");
if (onLoadMoreListener != null) {
//Log.i(TAG, "Episodes Adapter: onLoadMore calling...");
onLoadMoreListener.onLoadMore();
}
isLoading = true;
}
}
}
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
});
}
private void setupRecycler() {
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(linearLayoutManager);
historyAdapter = new HistoryAdapter(getActivity(), historyItems, recyclerView);
recyclerView.setAdapter(historyAdapter);
historyAdapter.setClickListener(this);
historyAdapter.setOnLoadMoreListener(this);
historyAdapter.setErrorClickListener(this);
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/medium_text_color_blue"
android:padding="12dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:text="#"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4.5"
android:gravity="start"
android:text="CLASS"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center"
android:text="Date"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center"
android:text="time"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold" />
</LinearLayout>
<FrameLayout
android:layout_below="@+id/header"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/no_reflection_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="center"
android:text="No Reflection History found!" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/history_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
</RelativeLayout>
ScrollView
的父
RecyclerView
阻止触发
onScrolled
方法,但这似乎不是我面临的问题。
最佳答案
另一种方法是检查回收器是否可以垂直滚动,如果不能,则表示它已到达底部。
尝试这个
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
if (!recyclerView.canScrollVertically(1)) {
// Load more
}
}
}
`
关于android - addOnScrollListener 的 RecyclerView onScrolled 方法只调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59694298/
使用scrolltop,我使用if条件将滚动分为5部分。在第二部分中,我给出了scrolltop值从600到700px的视频。如果我再次滚动,视频会在该位置播放多次。但我希望视频必须如果我在该值内任意
我想做的就是在页面加载时触发一个函数。 似乎我的代码中有一个错误,但我无法弄清楚...我想我还是菜鸟... Hi, function myFunction () { docume
所以我有一个元素,我希望能够使用鼠标上的滚轮放大和缩小。我认为解决这个问题的一个好方法是这样的: JavaScript: var container = document.getElementById
我想在用户滚动网页时加载更多内容。我尝试使用 onScroll 事件 javascript 被多次调用 jQuery .scroll() 方法也被多次调用。 我该如何处理这个问题?是浏览器问题吗? 注
这是简化的 html: function handle() { console.log("fired"); };
我一直在研究 horizontal website本周并从这里的社区收到了很多建议和有用的代码(谢谢!)。 我的 JS 技能非常不稳定,但我正在更好地掌握它,我的 CodePen展示了我刚才所拥有的,
我使用此代码在滚动时获取页面中元素的偏移量,但滚动函数仅执行一次并提醒 viewportWidth,然后它停止在“off”变量处 这是原始脚本中的一个简单示例,它不仅仅是将 #menuIcon 设置为
// Schließen Button Hauptnavigation $('button#collapse-button').click(function () { $('n
我知道我只能调用一次window.onscroll = function(){},因为多次调用它可能会导致它们相互覆盖。这就是为什么我问:是否可以将函数调用“推送”到 window.onscroll?
实际上我见过一个网站,在滚动时自动加载新页面并将其附加到旧页面。 不仅是页面,URL 也会在滚动时发生变化。 我完全不知道如何实现这个。这是我看过的网站 matt 。这里只要向下滚动,就会有一个无限滚
我试图在屏幕上显示相应内容期间使菜单项显示为粗体,然后在该内容滚动过去后恢复正常。 我已经尝试了很多方法来做到这一点,但它似乎并没有奏效。我可以在适当的时候让它变粗,但是当我尝试添加属性让它恢复正常时
我有一个脚本,它在文档正文上运行 onmousemove 和 onscroll 的 addEventListener 以获取光标位置。 onmousemove 事件工作正常(客户端+滚动),但是当发生
是否可以检测用户何时在 facebook Canvas 应用程序上滚动(在 iframe 中)。因此,当用户在页面上向下滚动时,我可以执行操作。 最佳答案 您可以使用 jQuery API 并尝试他们
我有一个在滚动时收缩的横幅和它下面的一些内容,我怎样才能让内容在移动前在横幅上停留几秒钟?我尝试使用 jQuery 插件 stickem,但它似乎不起作用。 JS: $(document).scrol
我有一个 JavaScript 函数,它在窗口滚动到特定点时执行不同的条件语句。 (当窗口滚动到新的部分/行时或多或少地改变了我的导航链接的样式) // variables used var pLin
hi on scroll active class 未添加到li on click on a 工作正常请看一次。 $('nav a').on('click', function() {
我是 javascript 的新手,我试图在滚动 div id="container"时触发 div id="foo",以便在滚动 id“container”时说“IM AWESOME” .我什至给了
当用户滚动超过 25 像素时,我试图将 class 添加到 id。我不确定为什么,但我放学后该功能没有启动。任何关于为什么的帮助将不胜感激。这是我的代码: window.onscoll = funct
我需要显示水平 ListView 项目的无限滚动(意味着需要重复项目)例如 a,b,c,d,e,f,a,b,c,d,e,f,a,b,.... 粗体是屏幕上可见的项目 过程是在到达最后一个列表项后重复列
我想在发生滚动事件时实现onScroll。但是我不明白如何使用我通过 onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float d
我是一名优秀的程序员,十分优秀!