如何在滚动[重复]时找到显示在RecyclerView顶部的项目

问题描述 投票:1回答:3

我一直在寻找合适的API来完成我需要做的事情,但我几乎肯定必须要有一个API。但我找不到。

这是我的问题:

我正在回收器视图中显示一个ArrayList。我需要知道的是,当我上下滚动时,ArrayList中的哪个项目显示在回收器视图的顶部。这是我设置回收者视图的方式(没什么特别的):

private ArrayList<Transaction> filteredTransactions = new ArrayList<>();
...            

recyclerView = view.findViewById(R.id.feed_recycle_view);
        recyclerView.setHasFixedSize(true);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager((getActivity()));
        adapter = new FeedAdapter(filteredTransactions);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(adapter);

我碰到

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
}

提供了我需要的侦听器,但是我不知道如何从中获取显示在视图顶部的项目。

提前感谢

android android-recyclerview recycler-adapter
3个回答
1
投票

findFirstCompletelyVisibleItemPosition()将返回第一个完全可见的视图的适配器位置。

您可以这样操作:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);

                int itemPoition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition();

                // Get the item from the list
                mList.get(itemPoition)

            }

1
投票

您可以使用LinearLayoutManager的以下方法

int findFirstVisibleItemPosition();
int findFirstCompletelyVisibleItemPosition();
int findLastVisibleItemPosition();
int findLastCompletelyVisibleItemPosition();

阅读official文档


0
投票

[有些方法可以在线性布局管理器中使用,如

findFirstCompletelyVisibleItemPosition()

int findFirstVisibleItemPosition()

int findLastCompletelyVisibleItemPosition()

findLastVisibleItemPosition()

通过documentation肯定会为您提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.