RecyclerView增刪item

25minutes發表於2021-09-09

這是第一篇在慕課首發的文章, 為了發這篇, 搬運了好幾篇有關聯的文章來. 容我吐槽一下, 慕課的md很奇怪, 用著不太舒服. 你可以到或者來看看我, 至少目前我在那裡的文章更多更全.


目錄

  • 前言
  • 增刪item
  • 自定義增刪動畫
  • 最後

前言

之前寫過一篇的, 那這次就對比下RecyclerView的增刪item, 說句實話, 程式碼動態增刪佈局基本可以退群了.


增刪item

當然首先你可以按照第一篇-建立基礎的RecyclerView. 這次的關鍵是在介面卡程式碼中加入增刪item的操作. 要注意一點, 重新整理和原來在ListView的操作是不一樣的. 你可以直接看, 大致有這幾個:

  • notifyItemInserted()
  • notifyItemRemoved()
  • notifyItemMoved()
  • notifyItemChanged()

在介面卡中加入如下程式碼:

public void addData(int position) {
    mData.add(position, "hello python");
    notifyItemInserted(position);
}

public void removeData(int position) {
    mData.remove(position);
    notifyItemRemoved(position);
}

然後我們在toolbar中加上add和del按鈕, 對應這兩個方法.



並且設定長按為刪除操作, 點選是增加操作. 好了, 上效果圖:

圖片描述

不單單是我演示的這種佈局, 還有線型的, 橫向的, 瀑布流都可以有這種類似效果. 可參考.

那既然有預設動畫, 肯定就能自定義動畫了. 在這之前, 先說說幾個方法. 用來設定動畫的具體狀態的持續時間.

rvTest.getItemAnimator().setAddDuration(400);
rvTest.getItemAnimator().setRemoveDuration(400);
rvTest.getItemAnimator().setMoveDuration(400);
rvTest.getItemAnimator().setChangeDuration(400);

自定義增刪動畫

這裡藉助. 因為這個專案真的足夠棒.

自帶動畫個數都已經足夠用了, 見下. 你還可以繼續在這基礎上自定義. 是不是感覺三生萬物了.

Animators

分類 動畫類名
Cool LandingAnimator
Scale ScaleInAnimator, ScaleInTopAnimator, ScaleInBottomAnimator, ScaleInLeftAnimator, ScaleInRightAnimator
Fade FadeInAnimator, FadeInDownAnimator, FadeInUpAnimator, FadeInLeftAnimator, FadeInRightAnimator
Flip FlipInTopXAnimator, FlipInBottomXAnimator, FlipInLeftYAnimator, FlipInRightYAnimator
Slide SlideInLeftAnimator, SlideInRightAnimator, OvershootInLeftAnimator, OvershootInRightAnimator, SlideInUpAnimator, SlideInDownAnimator

而且非常難得的是使用方法還很簡單, 需要幾個步驟

  • 在Module的build.gradle中寫入
dependencies {
  implementation 'jp.wasabeef:recyclerview-animators:2.3.0'
}
  • 在Project的build.gradle中寫入
repositories {
    google()
    jcenter()
}

具體使用部分只要用動畫類名替換之前預設的動畫類名即可. 例如:

rvTest.setAdapter(mAdapter);
rvTest.setItemAnimator(new SlideInLeftAnimator());

好了, 接下來看幾個效果圖吧:

圖片描述

圖片描述

圖片描述


最後

喜歡記得點贊哦, 有意見或者建議評論區見, 暗中關注我也是可以的.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4328/viewspace-2806925/,如需轉載,請註明出處,否則將追究法律責任。

相關文章