プログラムでrecyclerviewの位置0にアイテムを追加しています
public void addQuestion(Question question){
this.questionList.add(0, question);
notifyItemInserted(0);
}
これは非常にうまく機能しており、アイテムは上部のリストに表示されますが、ユーザーは新しいアイテムを表示するには上にスクロールする必要があります。
アイテムが上部に表示され、recyclerviewが自動的にスクロールアップする方法はありますか?
よく使用できますmRecyclerView.smoothScrollToPosition(int position)
例:
public void addQuestion(Question question){
this.questionList.add(0, question);
notifyItemInserted(0);
mRecyclerView.smoothScrollToPosition(0);
}
UPDATE:
特定のアイテムへのスクロールを本当にスムーズにしたい場合は、この質問の答えを見ることができます
はい、できます
mRecyclerView.smoothScrollToPosition(0);
これを試して
mRecyclerView.smoothScrollToPosition(0);
私が正しいことを理解し、あなたが既にリストの一番上にスクロールしているという問題があるが、挿入するときにアイテムを見るためにもう一度スクロールしなければならなかった場合、それを避けるために私のアプローチを試すことができます。
私の経験から、挿入後のスクロールのアプローチは機能しますが、アニメーションは自然に見えません。
本当にアニメーションを保存したい場合は、私のプロジェクトで私を助けたアプローチを試すことができます:マルチタイプのリサイクラーを使用します。アダプタの0の位置に2番目のタイプの追加アイテムを表示します。このアイテムは、小さなパディング、ヘッダー(必要な場合)、または空のビューだけのビューにすることができます。次に、notifyItemInserted(1)を実行すると、ニース挿入アニメーションが得られます。
注:このアプローチでは、プロジェクトが複雑になる可能性があり、マルチタイプのリサイクルビューに関する知識が必要です。