recyclerviewでスクロールの開始/終了と方向を検出する必要があります。スクロールリスナーには、onScrolled()
とonScrollStateChanged()
という2つのメソッドがあります。最初のメソッドは、スクロールが開始された後に呼び出されます(実際にはonScrolled()と呼ばれ、onScrolling()ではありません)。 2番目の方法は状態に関する情報を示しますが、方向情報はありません。目標を達成するにはどうすればいいですか?recyclerviewの開始スクロールと終了スクロールの検出
答えて
ステップ1あなたはRecyclerView.OnScrollListenerを拡張するクラスを作成し、これらのメソッドをオーバーライドすることができ
public class CustomScrollListener extends RecyclerView.OnScrollListener {
public CustomScrollListener() {
}
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
switch (newState) {
case RecyclerView.SCROLL_STATE_IDLE:
System.out.println("The RecyclerView is not scrolling");
break;
case RecyclerView.SCROLL_STATE_DRAGGING:
System.out.println("Scrolling now");
break;
case RecyclerView.SCROLL_STATE_SETTLING:
System.out.println("Scroll Settling");
break;
}
}
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dx > 0) {
System.out.println("Scrolled Right");
} else if (dx < 0) {
System.out.println("Scrolled Left");
} else {
System.out.println("No Horizontal Scrolled");
}
if (dy > 0) {
System.out.println("Scrolled Downwards");
} else if (dy < 0) {
System.out.println("Scrolled Upwards");
} else {
System.out.println("No Vertical Scrolled");
}
}
}
ステップ2 - setOnScrollListenerはaddOnScrollListener
mRecyclerView.addOnScrollListener(new CustomScrollListener());
はonScrollStateChanged(int state)
のマニュアルを参照してください。 三つの可能な値は次のとおりです。
SCROLL_STATE_IDLE
:いいえスクロールは行われません。SCROLL_STATE_DRAGGING
:ユーザーが画面上で指をドラッグしている(または、それはプログラム的に行われている
SCROLL_STATE_SETTLING
:。ユーザーが自分の指を上げており、アニメーションは現在、鈍化しているので
ます場合。そして、あなたはこのようなものを作成することができ、スクロールが開始および終了したときに検出します:
public void onScrollStateChanged(int state) {
boolean hasStarted = state == SCROLL_STATE_DRAGGING;
boolean hasEnded = state == SCROLL_STATE_IDLE;
}
OKをスクロールrecyclerViewに関連する私の例外OutOfBoundsを修正しましたが、どのようにしても方向を検出することができます同じ時間ですか? – greywolf82
あなたは 'onScrolled(int型DX、int型DY)をオーバーライド'と 'dy'はあなたに1つまたは他の方向を与える、正または負であるかどうかを確認することができます。 –
を使用することをお勧めします推奨されませんので、それを行うための最も簡単な方法は、あなたのlayoutManagerを引き出すことです。たとえば、
private RecyclerView.OnScrollListener mListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
GridLayoutManager layoutManager=GridLayoutManager.class.cast(recyclerView.getLayoutManager());
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
int pastVisibleItems = layoutManager.findFirstCompletelyVisibleItemPosition();
if(pastVisibleItems+visibleItemCount >= totalItemCount){
// End of the list is here.
Log.i(TAG, "End of list");
}
}
}
希望します。ここ
スクロールが(RecyclerViewのために)停止した後のアクションを作るために完全なソリューションです
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
//Your action here
}
});
- 1. JavaFXのスクロールが開始され、終了しました
- 2. UITextViewがスクロールを終了したときに検出する
- 3. Delphi:ウィンドウ移動の開始と終了の検出
- 4. 散文のダイアログセクションの開始と終了を検出
- 5. スクロールの浮動小数点div開始位置と終了位置(!)
- 6. Android Scrollview:スクロールビューの開始と終了を検出する方法
- 7. Viewpagerのスクロール終了イベント
- 8. recyclerviewのAndroid検索とそれにスクロール
- 9. pyQtGraphウィジェットの境界を検出してスクロールを開始
- 10. アニメーション開始時のスクロール
- 11. セレクト開始と終了
- 12. 検索開始日、終了日
- 13. RecyclerViewのスクロールを再開する方法
- 14. UIScrollViewスクロールの検出
- 15. Tensorflowオブジェクト検出開始前に終了します
- 16. 文字列の開始と終了の検索方法
- 17. CodeIgniterの開始日と終了日の検証
- 18. 列内の開始時刻と終了時刻の検索
- 19. 検索Sharepointリスト - 結果の開始日と終了日の間
- 20. リストのスライスの開始と終了
- 21. jQueryスクロール検出
- 22. 水平Recyclerviewのスクロール
- 23. スクロール時のRecyclerviewジャーク
- 24. 円滑なスクロールの終了位置
- 25. String.joinインデックスの開始と終了
- 26. Androidスタジオマニフェストの開始タグと終了タグ
- 27. 開始日と終了日の月
- 28. notepad ++ pl plsqlブロックの開始と終了
- 29. wxPython - BusyCursorの開始と終了
- 30. core.asyncの開始と終了間隔
プラスワン........魅力などのように作業します。おかげ –
は 'RecyclerView.OnScrollListener'はそれを決めたグーグルDEV @インタフェース/手のひらを顔に当てるではありません。 –