В своем проекте я использую swiperefreshlayout и recyclerview. Я хочу отключить функцию swiperefreshlayout, когда не отображается первый элемент. как мне это сделать? У меня есть код, но он не работает:
int topRowVerticalPosition = (myRecyclerView == null || myRecyclerView.getChildCount() == 0) ? 0 : myRecyclerView.getChildAt(0).getTop();
swipeRefreshLayout.setEnabled(layoutManager.findFirstCompletelyVisibleItemPosition() == 0 && topRowVerticalPosition >= 0);
Вам необходимо добавить OnScrollListener в RecyclerView
следующим образом, и вы можете включить/отключить swipeRefreshLayout, используя видимость первого дочернего элемента RecyclerView
:
myRecyclerView.addOnScrollListener(new OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
View firstChild = recyclerView.getChildAt(0);
swipeRefreshLayout.setEnabled(firstChild.getVisibility() == View.VISIBLE);
}
});