リサイクルビューのアイテムのx/yを取得する方法。 mRecyclerView.getChildAt(1)は、子が位置1に表示されるようにします。 リストの子を1位で取得して、0,0に達したときに何らかの操作を実行したいとします。RecyclerViewの 'x'アイテムの位置を取得する
if(mRecyclerView.getChildAt(1).getTop() == 0){
//do some operation
}
どうすれば達成できますか?
リサイクルビューのアイテムのx/yを取得する方法。 mRecyclerView.getChildAt(1)は、子が位置1に表示されるようにします。 リストの子を1位で取得して、0,0に達したときに何らかの操作を実行したいとします。RecyclerViewの 'x'アイテムの位置を取得する
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){
//...
}
}
});
これは何ですか 'バインディング'ですか? –
getChildAt(1)は、画面に表示されている1番目の子を与えています –
私のケースでは@AshishJohnバインディングはViewDataBindingオブジェクトです – Ekalips
https://stackoverflow.com/questions/38004369/get-xy-positions-of-nth-item-in-recyclerview?rq=1 –
@LalitSinghFauzdarの可能複製、私が欲しいです特定のアイテム、例えばポジション2のアイテムのトップポジションですが、そこには解決策はありません。 –