RecyclerView 條目增刪改的坑

場(chǎng)景

一般關(guān)于RecyclerView列表?xiàng)l目的增刪改加動(dòng)畫(huà)的話 會(huì)考慮用itemAnimators
recyclerView.setItemAnimator(new ScaleInLeftAnimator())身笤;
adapter里會(huì)用到如下的幾個(gè)方法:

  • notifyItemInserted(int position)
  • notifyItemRemoved(int position)
  • notifyItemRangeChanged(int positionStart, int itemCount)

示例代碼

    public void add(String text, int position) {
        mDataSet.add(position, text);
        notifyItemInserted(position);
    }

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

    public void changeData(List<String> datas) {
        int len = mDataSet.size();
        if (!mDataSet.isEmpty()) {
            mDataSet.clear();
        }
        mDataSet.addAll(datas);
        notifyItemRangeChanged(0,datas.size());
    }

坑在哪

  1. 假如在position=1的位置,插入/刪除/一條數(shù)據(jù)稳吮,ui上沒(méi)啥問(wèn)題。但是F昂怼L病粉臊!
    以add item舉例,add后酪劫,原來(lái)positiom為1的item現(xiàn)在應(yīng)該為2了,debug發(fā)現(xiàn)并沒(méi)有寺董,position還是1覆糟。
  2. notifyItemRangeChanged(0,datas.size()); 假如原本列表是50條數(shù)據(jù),你批量替換數(shù)據(jù)為新的10條數(shù)據(jù)遮咖,不要直接這樣用滩字,這個(gè)方法只是item內(nèi)容改變的時(shí)候用,不是完全替代notifyDataSetChanged();

解決方案

    public void remove(int position) {
        mDataSet.remove(position);
        notifyItemRemoved(position);
        notifyItemRangeChanged(position,mDataSet.size()-position);
    }

    public void add(String text, int position) {
        mDataSet.add(position, text);
        notifyItemInserted(position);
        notifyItemRangeChanged(position,mDataSet.size()-position);
    }

    public void changeData(List<String> datas) {
        int len = mDataSet.size();
        if (!mDataSet.isEmpty()) {
            mDataSet.clear();
        }
        mDataSet.addAll(datas);
        notifyDataSetChanged();
       //notifyItemRangeChanged(0,datas.size());//內(nèi)容改變的時(shí)候用
    }

最后

  • 我沒(méi)看源碼御吞,不是很懂google怎么想的麦箍,請(qǐng)懂的老鐵指點(diǎn)迷津,比看源碼快陶珠,萬(wàn)分感謝挟裂。
  • 問(wèn)題: 假如列表切換新的數(shù)據(jù),想有change動(dòng)畫(huà)揍诽,又想用setItemAnimator的動(dòng)畫(huà)方式诀蓉,該怎么用notifyItemRangeChanged() ??栗竖?
  • 寫個(gè)帖子問(wèn)題很多系列 哈哈哈
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市渠啤,隨后出現(xiàn)的幾起案子狐肢,更是在濱河造成了極大的恐慌,老刑警劉巖埃篓,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件处坪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡架专,警方通過(guò)查閱死者的電腦和手機(jī)同窘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)部脚,“玉大人想邦,你說(shuō)我怎么就攤上這事∥酰” “怎么了丧没?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锡移。 經(jīng)常有香客問(wèn)我呕童,道長(zhǎng),這世上最難降的妖魔是什么淆珊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任夺饲,我火速辦了婚禮,結(jié)果婚禮上施符,老公的妹妹穿的比我還像新娘往声。我一直安慰自己,他們只是感情好戳吝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布浩销。 她就那樣靜靜地躺著,像睡著了一般听哭。 火紅的嫁衣襯著肌膚如雪慢洋。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天欢唾,我揣著相機(jī)與錄音且警,去河邊找鬼。 笑死礁遣,一個(gè)胖子當(dāng)著我的面吹牛斑芜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祟霍,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼杏头,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盈包!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起醇王,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤呢燥,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后寓娩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體叛氨,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年棘伴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寞埠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡焊夸,死狀恐怖仁连,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阱穗,我是刑警寧澤饭冬,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站揪阶,受9級(jí)特大地震影響昌抠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鲁僚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一扰魂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蕴茴,春花似錦、人聲如沸姐直。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)声畏。三九已至撞叽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間插龄,已是汗流浹背愿棋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留均牢,地道東北人糠雨。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像徘跪,于是被迫代替她去往敵國(guó)和親甘邀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子琅攘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 【Android 控件 RecyclerView】 概述 RecyclerView是什么 從Android 5.0...
    Rtia閱讀 307,415評(píng)論 27 439
  • 簡(jiǎn)介: 提供一個(gè)讓有限的窗口變成一個(gè)大數(shù)據(jù)集的靈活視圖。 術(shù)語(yǔ)表: Adapter:RecyclerView的子類...
    酷泡泡閱讀 5,148評(píng)論 0 16
  • 豐富的寒假生活有著各種各樣的活動(dòng)松邪,而我最喜歡的就是和爸爸媽媽還有弟弟一起去觀看電影坞琴。其中《海洋奇緣》這部電影...
    若淇丫頭閱讀 2,375評(píng)論 0 1
  • 大都市中的我們行色匆匆,疾步奔走于人生的旅途逗抑。我們會(huì)被路邊的花草鳥(niǎo)獸吸引剧辐,會(huì)被樹(shù)叢中不經(jīng)意間冒出的荊棘刺傷,會(huì)被溝...
    吉甫作誦_穆如清風(fēng)閱讀 377評(píng)論 0 0
  • 這個(gè)故事發(fā)生在上個(gè)世紀(jì)邮府,在東北的某個(gè)村子里發(fā)生的荧关。 說(shuō)村北頭有一家人姓林的人家,家中三口人挟纱,丈夫老林羞酗、妻子周氏與不...
    叢某某閱讀 348評(píng)論 0 3