我試圖在活動頁面上實現一個包含列表和其下一些其他視圖的ToDo列表。Android RecyclerView刪除項目動畫錯誤
我使用整個頁面LinearLayout
和列表中RecyclerView
,下面一起其他視圖RecyclerView
(ImageView
,Buttons
...等)
這是我最後的視圖層次:
<LinearLayout>
<TextView />
<RecyclerView />
<Button />
<EditText />
<ImageView />
</LinearLayout>
我已經實施RecyclerView
我可以添加和刪除項目。 我在使用LinearLayoutManager
而未指定ItemAnimator
,因此使用了DefaultItemAnimator
。
將項目添加到列表中可按預期工作。我的問題是,當從RecyclerView
刪除項(通過先從數據集中刪除它,然後使用RecyclerViewAdapter.notifyItemRemoved
),頁面不能很好地動畫。
什麼情況是,整個頁面捕捉第一,以適應新的RecyclerView
高度,然後RecyclerView
項目中刪除動畫完成,這使得頁面的行爲看起來很怪異,因爲RecyclerView
下面的所有意見搶購而被刪除的項目淡出,但尚未失去其高度,然後剩下的RecyclerView
項(在刪除的項目下方)向上滾動,看起來像從牆下向上滑動。
我試圖尋找網絡上的解決方案,並找不到任何解決我的問題。
我發現this unanswered question描述了同樣的問題。如果我的解釋不夠清楚,請參考它。
任何人遇到同樣的問題?有什麼建議麼?
謝謝。
所以你想刪除動畫時項目變化的權利? –
而不是使用notifyDataSetChanged(),請使用notifyItemRemoved()。 NotifyDataSetChanged重建RecyclerView中的整個數據集,所以所有的行都被重繪。而notifyItemRemoved()或notifyItemRangeChanged()只會刷新已更改的項目,所以生澀的議案將消失。 – Rachit
@Divyesh我不想刪除動畫,我只是希望整個頁面在我從RecyclerView中刪除一個項目時動畫很好。我的意思是我希望頁面在翻譯之前等待RecyclerView項目動畫完成。 – Copy33