如何避免选定的列表项移到列表顶部?

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

我有RecyclerView,其中包含50个项目。我将使用遥控器上下按钮逐个导航。要选择任何项目(例如25日)我正在使用recyclerview.scrollToPosition(position)方法。在此选择之后,该项目将自动移动到列表的顶部位置。我不希望我所选择的项目位于该位置的顶部。我想成为同一个选定的职位。我该如何实现这一目标?

谢谢K. Rajesh

android android-recyclerview scrolltop
1个回答
1
投票

如果你使用的是向上和向下控制,它与ViewHolder的实际RecyclerViews完全分开,你可以使用RecyclerView.scrollBy(x, y)

假设您的所有项目大小相同,您甚至不必考虑“选定项目”索引,因为项目高度不可能有变化。只需在第一个位置使用View,然后在每个向上或向下按钮单击时滚动正高度或负高度。

如果您使用的是LinearLayoutManagerGridLayoutManager,Kotlin中的部分示例将会是这样的:

    view.findViewById<Button>(R.id.up).setOnClickListener {
        val temp = recyclerView.layoutManager.findViewByPosition((recyclerView.layoutManager as LinearLayoutManager).findFirstCompletelyVisibleItemPosition())
        temp?.let {
            recyclerView?.scrollBy(0, -it.height)
        }
    }

    view.findViewById<Button>(R.id.down).setOnClickListener {
        val temp = recyclerView.layoutManager.findViewByPosition((recyclerView.layoutManager as LinearLayoutManager).findFirstCompletelyVisibleItemPosition())
        temp?.let {
            recyclerView?.scrollBy(0, it.height)
        }
    }

此外,请注意,如果您将ItemDecorations添加到RecyclerView中,则需要在执行滚动时考虑这些额外的间距。

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