記一次多選刪除的邏輯判斷以及操作流程

首次加載數據之后初始化Map集合,我使用的treeMap

    /**
     * 初始化map集合,默認為不選中
     */
    private void initMap(boolean flag) {

        for (int i = 0; i < mAdapter.getData().size(); i++) {
            deleteMap.put(i, flag);
        }
    }

Adapter配置方法用于判斷checkBox是否顯示,默認false,不顯示

        private boolean flag = false;

        /**
         * checkBox是否出現
         *
         * @param flag checkBox是否出現
         */
        private void changeFlag(boolean flag) {

            this.flag = flag;
        }

適配器內用于判斷,是否顯示

 if (flag ) {
 
    checkBox.setVisibility(View.VISIBLE);
    
    } else {
    
      checkBox.setVisibility(View.GONE);
     }
     

添加點擊事件用于更新map

 checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                   
                    deleteMap.put(position, isChecked);
                }
            });

通過map對應的值,用于更新checkBox是否要勾選的狀態

 if (View.VISIBLE == checkBox.getVisibility()) {

               checkBox.setChecked(deleteMap.get(position));
            }

設置點擊跳轉,刪除裝天下點擊既為勾選,更新map數據,通知適配器

deleteMap.put(position, true);

mAdapter.notifyDataSetChanged();

長按狀態下,變為刪除狀態,刪除狀態下,長按直接return turn;變為刪除狀態,顯示checkBox,顯示取消和全選view,更新該條數據為勾選狀態,通知適配器

mAdapter.changeFlag(true);
                                        deleteView.setVisibility(View.VISIBLE);
                                        deleteMap.put(position, true);
                                        mAdapter.notifyDataSetChanged();

點擊取消,首先清空map數據,重新賦值全部為false,隱藏checkBox,再通知適配器,隱藏全選view(關于,不清空,直接重新賦值,因為刪除數據之后map長度會有變化(賦值根據新的數據長度)),刪除成功之后也是要重新賦值

 deleteMap.clear();
 initMap(false);
 mAdapter.changeFlag(false);
 mAdapter.notifyDataSetChanged();
 deleteView.setVisibility(View.GONE);

全選按鈕,首先清空集合,重新賦值,全部為true,再通知適配器

 deleteMap.clear();
 initMap(true);
 mAdapter.notifyDataSetChanged();

點擊刪除時,遍歷map,使用StringBuilder拼接要刪除的條目ID

 StringBuilder workId = new StringBuilder();
        for (Map.Entry<Integer, Boolean> map : deleteMap.entrySet()) {
            if (map.getValue()) {
                String string = mAdapter.getData().get(map.getKey()).getWorkId() + ";";
                workId.append(string);
            }
        }

刪除成功后倒敘刪除適配器中所刪除的條目,清空map集合,重新賦值,全部為false,隱藏checkBox和全選view以及通知適配器

 for (int i = mAdapter.getData().size() - 1; i >= 0; i--) {

      if (deleteMap.get(i)) {
          mAdapter.remove(i);
      }
  }
   
 deleteMap.clear();
 initMap(false);
 mAdapter.changeFlag(false);
 mAdapter.notifyDataSetChanged();
 deleteView.setVisibility(View.GONE);

另外隱藏和動態顯示時,再xml中父view添加

android:animateLayoutChanges="true"

效果不會那么突兀

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,179評論 4 61
  • 站在往市區去的公交車上,車上人不算多,但我們還是沒有位置只有站著。沿途有很多樹,車上高速了,以每分鐘兩百米的速度在...
    莫莫莫呀閱讀 533評論 2 1
  • 生活沒有欺騙我, 所以沒有悲傷,也不著急。 平淡的日子里須要調劑: 相信吧,快樂的日子將會來臨! 心兒永遠向往著未...
    眾品惢閱讀 206評論 1 1
  • 原本以為時間已經夠久了,我經歷的事情也已經夠多了。可以安然的忘卻以前,忘卻這個春天,忘卻你。可此時此刻,卻真的好想...
    為你顛覆世界閱讀 862評論 10 11