web-dev-qa-db-ja.com

RecyclerViewの上部に新しいアイテムを追加する

プログラムでrecyclerviewの位置0にアイテムを追加しています

public void addQuestion(Question question){
    this.questionList.add(0, question);
    notifyItemInserted(0);
}

これは非常にうまく機能しており、アイテムは上部のリストに表示されますが、ユーザーは新しいアイテムを表示するには上にスクロールする必要があります。

アイテムが上部に表示され、recyclerviewが自動的にスクロールアップする方法はありますか?

15
Chris Blank

よく使用できますmRecyclerView.smoothScrollToPosition(int position)

例:

public void addQuestion(Question question){
    this.questionList.add(0, question);
    notifyItemInserted(0);
    mRecyclerView.smoothScrollToPosition(0);
}

UPDATE:

特定のアイテムへのスクロールを本当にスムーズにしたい場合は、この質問の答えを見ることができます

RecyclerView-特定の位置でアイテムの上部にスムーズにスクロールする方法?

18
Max

はい、できます

mRecyclerView.smoothScrollToPosition(0);
3
user5543258

これを試して

mRecyclerView.smoothScrollToPosition(0);
3
Akshay Panchal

私が正しいことを理解し、あなたが既にリストの一番上にスクロールしているという問題があるが、挿入するときにアイテムを見るためにもう一度スクロールしなければならなかった場合、それを避けるために私のアプローチを試すことができます。

私の経験から、挿入後のスクロールのアプローチは機能しますが、アニメーションは自然に見えません。

本当にアニメーションを保存したい場合は、私のプロジェクトで私を助けたアプローチを試すことができます:マルチタイプのリサイクラーを使用します。アダプタの0の位置に2番目のタイプの追加アイテムを表示します。このアイテムは、小さなパディング、ヘッダー(必要な場合)、または空のビューだけのビューにすることができます。次に、notifyItemInserted(1)を実行すると、ニース挿入アニメーションが得られます。

注:このアプローチでは、プロジェクトが複雑になる可能性があり、マルチタイプのリサイクルビューに関する知識が必要です。

2
j2esu