Adding new item to the top of the RecyclerView

前端 未结 4 1237
囚心锁ツ
囚心锁ツ 2020-12-30 01:37

I am adding an item to recyclerview position 0 programamticly

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


        
相关标签:
4条回答
  • 2020-12-30 02:10

    Yes, you can do this

    mRecyclerView.smoothScrollToPosition(0);
    
    0 讨论(0)
  • 2020-12-30 02:17

    If i understand right and you problem is that you already scrolled to top of list, but when inserting you had to scroll again to see item, you can try my approach to avoid it.

    From my experience, approach with scrolling after insertion works, but animations doesn't look natural.

    If you really want to save animations you can try an approach which helped me in my project: use multi-typed recycler. Display additional item of second type at 0 position in your adapter. This item can be just a view with little padding, header (if you need) or even an empty view. Then, notifyItemInserted(1) and you will get nice insert animation.

    NOTE: this approach may add complexity to your project and requires knowledge about multi-type recycler view.

    0 讨论(0)
  • 2020-12-30 02:24

    well you can use mRecyclerView.smoothScrollToPosition(int position)

    Example:

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

    UPDATE:

    if you want to make the scrolling to certain item really smooth you can have a look at answer to this question

    RecyclerView - How to smooth scroll to top of item on a certain position?

    0 讨论(0)
  • 2020-12-30 02:31

    Try this

    mRecyclerView.smoothScrollToPosition(0);
    
    0 讨论(0)
提交回复
热议问题