日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

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

效果圖如下:

recyclerview 實(shí)現(xiàn)多選,單選,全選,反選,批量刪除的步驟

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

2.這里選中的控件沒(méi)有用checkbox來(lái)做,用的是imageview,選中和不選中其實(shí)是兩張圖片

3.默認(rèn)是不顯示選中的控件的,點(diǎn)擊編輯的時(shí)候顯示,點(diǎn)擊取消的時(shí)候隱藏

4.通過(guò)adapter和activity數(shù)據(jù)之間的傳遞,然后進(jìn)行具體的操作

具體代碼如下:

在recyclerview的布局中寫(xiě)全選,反選,刪除,計(jì)數(shù)等相應(yīng)的控件

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中的布局就不必再寫(xiě)了,就一個(gè)item,最左邊一個(gè)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"/>

布局寫(xiě)完開(kāi)始寫(xiě)邏輯代碼

首先在adapter定義一個(gè)方法,以便在activity中拿到數(shù)據(jù)添加進(jìn)adapter中

public void notifyadapter(list mylivelist,boolean isadd){

if (!isadd){

this.mmylivelist=mylivelist;

}else {

this.mmylivelist.addall(mylivelist);

}

notifydatasetchanged();

}

然后在activity中拿到獲取到數(shù)據(jù)后調(diào)用adapter中的這個(gè)方法,添加數(shù)據(jù)

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

在adapter中在判空,更有保證

public list getmylivelist(){

if (mmylivelist == null) {

mmylivelist =new arraylist<>();

}

return mmylivelist;

}

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

接下來(lái)開(kāi)始點(diǎn)擊編輯的時(shí)候顯示出imageview和recycleview中的底部全選反選部分

定義兩個(gè)變量

private static final int mylive_mode_check = 0;

private static final int mylive_mode_edit = 1;

//點(diǎn)擊編輯的時(shí)候顯示,順便調(diào)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);

//當(dāng)然,adapter中也有先關(guān)的變量在記錄

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); // 為了條目不復(fù)用

//顯示和隱藏

if (meditmode == mylive_mode_check) {

holder.mcheckbox.setvisibility(view.gone);

} else {

holder.mcheckbox.setvisibility(view.visible);

為了方便記錄選中的狀態(tài),在bean里面用個(gè)變量記起來(lái)

public boolean isselect;

public boolean isselect() {

return isselect;

}

public void setselect(boolean isselect) {

this.isselect = isselect;

}

//然后點(diǎn)擊條目選中和不選中的時(shí)候?yàn)閕mageview設(shè)置不同的圖片

if(mylive.isselect()) {

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

}else{

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

}

//在adapter中暴漏一個(gè)item的點(diǎn)擊事件的接口

public interface onswipelistener {

void onitemclicklistener(int pos,list mylivelist);

}

/*

在activity中的item點(diǎn)擊事件中,來(lái)操作imageview是否選中

*/

//用一個(gè)變量記錄

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();

/**

* 根據(jù)選擇的數(shù)量是否為0來(lái)判斷按鈕的是否可點(diǎn)擊.

*

* @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));

}

}

至于全選和反選的操作,就是遍歷這個(gè)bean類(lèi),得到他的選擇狀態(tài),重新設(shè)置就可以了.

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));

最后刪除的話(huà)就調(diào)刪除的接口,遍歷這個(gè)bean,判斷當(dāng)前的狀態(tài)如果是選中的狀態(tài),就刪除! 這樣就ok了 !!!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持萬(wàn)仟網(wǎng)。

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。