如何獲得再循環器視圖中物品的x/y。 mRecyclerView.getChildAt(1)讓孩子在位置1可見。 我想在第一個位置獲取列表子,以在達到0,0時執行某些操作。獲取'x'物品在RecyclerView中的位置
if(mRecyclerView.getChildAt(1).getTop() == 0){
//do some operation
}
我該如何實現它?
如何獲得再循環器視圖中物品的x/y。 mRecyclerView.getChildAt(1)讓孩子在位置1可見。 我想在第一個位置獲取列表子,以在達到0,0時執行某些操作。獲取'x'物品在RecyclerView中的位置
if(mRecyclerView.getChildAt(1).getTop() == 0){
//do some operation
}
我該如何實現它?
有2種方法來實現這一目標:
創建您自己的LayoutManager
(也將延長LinearLayoutManager
爲例),其連接到你的RecyclerView
,並獲得滾動RecyclerView
第一個孩子的位置。
public class MyLinearLayoutManager extends LinearLayoutManager {
//Constructor stuff
@Override
public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) {
if (getChildAt(1).getTop() == 0) {
// do stuff...
}
return super.scrollVerticallyBy(dy, recycler, state);
}
@Override
public void onLayoutCompleted(RecyclerView.State state) {
super.onLayoutCompleted(state);
// check your stuff here too. It'll be called when new views appeared
}
}
將滾動偵聽器附加到RecyclerView
並獲取視圖位置。
RecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
RecyclerView.ViewHolder holder = RecyclerView.findViewHolderForAdapterPosition(1);
View view = holder.itemView;
if (view.getTop() == 0){
//...
}
}
});
https://stackoverflow.com/questions/38004369/get-xy-positions-of-nth-item-in-recyclerview?rq=1 –
@LalitSinghFauzdar的可能重複,我想要的特定項目的頂部位置,即位置2處的項目,但在此沒有提供關於此的解決方案。 –