やりたいこと
ScrollView の中に RecyclerView を入れてスクロールできるようにしている画面があります。
--------------------
| ScrollView |
| ---------------- |
| | RecyclerView | |
| | | |
RecyclerView の中身はユーザーの操作によって非同期的に変更されることがあり、変更される場合はトップまでスクロールを戻したい。
【2020/11/02 追記】
コメントでご指摘いただきましたが、上記のような場合 ScrollView がなくてもスクロールが機能するので不要でした。
そのうえで RecyclerView をトップまで戻す方法は下記にあるとおり recyclerView.scrollToPosition(0)
で OK のようです。
試したこと
スクロールをトップまで戻すための方法はいろいろな記事で書かれています。
よく目にするのが以下の2つ。
scrollView.fullScroll(ScrollView.FOCUS_UP)
scrollView.scrollTo(0, 0)
しかし自分の環境ではどちらもうまく機能しませんでした。
結論
結果、次の方法で解決しました。
recyclerView.scrollToPosition(0)
RecyclerView の最初の要素までスクロールさせることができます。
上記ダメパターンがなぜ機能しなかったのか、、もしわかる方がいれば教えていただけると幸いです。 → コメントにて教えていただきました!