日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

android 批量查找view,Android Recyclerview实现多选,单选,全选,反选,批量删除的功能

發布時間:2023/12/2 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 批量查找view,Android Recyclerview实现多选,单选,全选,反选,批量删除的功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

效果圖如下:

recyclerview 實現多選,單選,全選,反選,批量刪除的步驟

1.在recyclerview布局中添加上底部的全選和反選按鈕,刪除按鈕,和計算數量等控件

2.這里選中的控件沒有用checkbox來做,用的是imageview,選中和不選中其實是兩張圖片

3.默認是不顯示選中的控件的,點擊編輯的時候顯示,點擊取消的時候隱藏

4.通過adapter和activity數據之間的傳遞,然后進行具體的操作

具體代碼如下:

在recyclerview的布局中寫全選,反選,刪除,計數等相應的控件

android:id="@+id/ll_mycollection_bottom_dialog"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:layout_gravity="bottom"

android:visibility="gone"

android:background="@color/app_bg">

android:background="#e5e5e5"

android:layout_width="match_parent"

android:layout_height="1px"/>

android:background="@color/white"

android:layout_width="match_parent"

android:layout_height="@dimen/px_90">

android:layout_centervertical="true"

android:id="@+id/tv"

android:textcolor="#1a1a1a"

android:textsize="@dimen/px_28"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginleft="@dimen/px_30"

android:text="@string/mine_certify_select" />

android:layout_centervertical="true"

android:layout_torightof="@+id/tv"

android:textcolor="#1a1a1a"

android:textsize="@dimen/px_28"

android:id="@+id/tv_select_num"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginleft="@dimen/px_18"

android:text="0" />

android:textcolor="@color/color_b7b8bd"

android:textsize="@dimen/px_28"

android:layout_centervertical="true"

android:background="@drawable/button__noclickable_shape"

android:gravity="center"

android:id="@+id/btn_delete"

android:layout_width="@dimen/px_160"

android:layout_height="@dimen/px_66"

android:layout_marginright="@dimen/px_30"

android:layout_alignparentright="true"

android:text="刪除" />

android:layout_centervertical="true"

android:id="@+id/select_all"

android:layout_marginright="@dimen/px_30"

android:background="@drawable/bg_selete_all"

android:layout_toleftof="@+id/btn_delete"

android:layout_width="@dimen/px_160"

android:layout_height="@dimen/px_66"

android:text="全選"

android:gravity="center"

android:textcolor="#000001"

android:textsize="@dimen/px_28"/>

adapter中的布局就不必再寫了,就一個item,最左邊一個imageview.

android:id="@+id/check_box"

android:src="@mipmap/ic_uncheck"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:layout_marginleft="@dimen/px_24"

android:gravity="center"

android:visibility="gone"/>

布局寫完開始寫邏輯代碼

首先在adapter定義一個方法,以便在activity中拿到數據添加進adapter中

public void notifyadapter(list mylivelist,boolean isadd){

if (!isadd){

this.mmylivelist=mylivelist;

}else {

this.mmylivelist.addall(mylivelist);

}

notifydatasetchanged();

}

然后在activity中拿到獲取到數據后調用adapter中的這個方法,添加數據

madapter.notifyadapter(data.getlist(), false);

在adapter中在判空,更有保證

public list getmylivelist(){

if (mmylivelist == null) {

mmylivelist =new arraylist<>();

}

return mmylivelist;

}

然后adapter中的getitemcount就直接拿到上面這個mmylivelist的大小就可以了

接下來開始點擊編輯的時候顯示出imageview和recycleview中的底部全選反選部分

定義兩個變量

private static final int mylive_mode_check = 0;

private static final int mylive_mode_edit = 1;

//點擊編輯的時候顯示,順便調madapter.seteditmode(meditmode);賦值

meditmode = meditmode == mylive_mode_check ? mylive_mode_edit : mylive_mode_check;

if (meditmode == mylive_mode_edit) {

activity_btn.settext("取消");

ll_mycollection_bottom_dialog.setvisibility(view.visible);

editorstatus = true;

} else {

activity_btn.settext("編輯");

ll_mycollection_bottom_dialog.setvisibility(view.gone);

editorstatus = false;

onrefresh();

}

madapter.seteditmode(meditmode);

//當然,adapter中也有先關的變量在記錄

private static final int mylive_mode_check = 0;

int meditmode = mylive_mode_check;

public void seteditmode(int editmode) {

meditmode = editmode;

notifydatasetchanged();

}

//在onbindviewholder中做顯示和隱藏的操作.

holder.setisrecyclable(false); // 為了條目不復用

//顯示和隱藏

if (meditmode == mylive_mode_check) {

holder.mcheckbox.setvisibility(view.gone);

} else {

holder.mcheckbox.setvisibility(view.visible);

為了方便記錄選中的狀態,在bean里面用個變量記起來

public boolean isselect;

public boolean isselect() {

return isselect;

}

public void setselect(boolean isselect) {

this.isselect = isselect;

}

//然后點擊條目選中和不選中的時候為imageview設置不同的圖片

if(mylive.isselect()) {

holder.mcheckbox.setimageresource(r.mipmap.ic_checked);

}else{

holder.mcheckbox.setimageresource(r.mipmap.ic_uncheck);

}

//在adapter中暴漏一個item的點擊事件的接口

public interface onswipelistener {

void onitemclicklistener(int pos,list mylivelist);

}

/*

在activity中的item點擊事件中,來操作imageview是否選中

*/

//用一個變量記錄

private int index = 0;

mylive mylive = mylivelist.get(pos);

boolean isselect = mylive.isselect();

if (!isselect) {

index++;

mylive.setselect(true);

if (index == mylivelist.size()) {

isselectall = true;

selectall.settext("取消全選");

}

} else {

mylive.setselect(false);

index--;

isselectall = false;

selectall.settext("全選");

}

setbtnbackground(index);

tv_select_num.settext(string.valueof(index));

radioadapter.notifydatasetchanged();

/**

* 根據選擇的數量是否為0來判斷按鈕的是否可點擊.

*

* @param size

*/

private void setbtnbackground(int size) {

if (size != 0) {

mbtndelete.setbackgroundresource(r.drawable.button_shape);

mbtndelete.setenabled(true);

mbtndelete.settextcolor(color.white);

} else {

mbtndelete.setbackgroundresource(r.drawable.button__noclickable_shape);

mbtndelete.setenabled(false);

mbtndelete.settextcolor(contextcompat.getcolor(this, r.color.color_b7b8bd));

}

}

至于全選和反選的操作,就是遍歷這個bean類,得到他的選擇狀態,重新設置就可以了.

if (radioadapter == null) return;

if (!isselectall) {

for (int i = 0, j = radioadapter.getmylivelist().size(); i < j; i++) {

radioadapter.getmylivelist().get(i).setselect(true);

}

index = radioadapter.getmylivelist().size();

mbtndelete.setenabled(true);

selectall.settext("取消全選");

isselectall = true;

} else {

for (int i = 0, j = radioadapter.getmylivelist().size(); i < j; i++) {

radioadapter.getmylivelist().get(i).setselect(false);

}

index = 0;

mbtndelete.setenabled(false);

selectall.settext("全選");

isselectall = false;

}

radioadapter.notifydatasetchanged();

setbtnbackground(index);

tv_select_num.settext(string.valueof(index));

最后刪除的話就調刪除的接口,遍歷這個bean,判斷當前的狀態如果是選中的狀態,就刪除! 這樣就ok了 !!!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持萬仟網。

總結

以上是生活随笔為你收集整理的android 批量查找view,Android Recyclerview实现多选,单选,全选,反选,批量删除的功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。