法律咨询东莞网站建设,如何学做网站优化,wordpress主题恢复默认,移动互联网开发就业前景效果图如下:recyclerview 实现多选,单选,全选,反选,批量删除的步骤1.在recyclerview布局中添加上底部的全选和反选按钮,删除按钮,和计算数量等控件2.这里选中的控件没有用checkbox来做,用的是imageview,选中和不选中其实是两张图片3.默认是不显示选中的控件的,点击编辑的时候显…效果图如下:recyclerview 实现多选,单选,全选,反选,批量删除的步骤1.在recyclerview布局中添加上底部的全选和反选按钮,删除按钮,和计算数量等控件2.这里选中的控件没有用checkbox来做,用的是imageview,选中和不选中其实是两张图片3.默认是不显示选中的控件的,点击编辑的时候显示,点击取消的时候隐藏4.通过adapter和activity数据之间的传递,然后进行具体的操作具体代码如下:在recyclerview的布局中写全选,反选,删除,计数等相应的控件android:idid/ll_mycollection_bottom_dialogandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationverticalandroid:layout_gravitybottomandroid:visibilitygoneandroid:backgroundcolor/app_bgandroid:background#e5e5e5android:layout_widthmatch_parentandroid:layout_height1px/android:backgroundcolor/whiteandroid:layout_widthmatch_parentandroid:layout_heightdimen/px_90android:layout_centerverticaltrueandroid:idid/tvandroid:textcolor#1a1a1aandroid:textsizedimen/px_28android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginleftdimen/px_30android:textstring/mine_certify_select /android:layout_centerverticaltrueandroid:layout_torightofid/tvandroid:textcolor#1a1a1aandroid:textsizedimen/px_28android:idid/tv_select_numandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginleftdimen/px_18android:text0 /android:textcolorcolor/color_b7b8bdandroid:textsizedimen/px_28android:layout_centerverticaltrueandroid:backgrounddrawable/button__noclickable_shapeandroid:gravitycenterandroid:idid/btn_deleteandroid:layout_widthdimen/px_160android:layout_heightdimen/px_66android:layout_marginrightdimen/px_30android:layout_alignparentrighttrueandroid:text删除 /android:layout_centerverticaltrueandroid:idid/select_allandroid:layout_marginrightdimen/px_30android:backgrounddrawable/bg_selete_allandroid:layout_toleftofid/btn_deleteandroid:layout_widthdimen/px_160android:layout_heightdimen/px_66android:text全选android:gravitycenterandroid:textcolor#000001android:textsizedimen/px_28/adapter中的布局就不必再写了,就一个item,最左边一个imageview.android:idid/check_boxandroid:srcmipmap/ic_uncheckandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenter_verticalandroid:layout_marginleftdimen/px_24android:gravitycenterandroid:visibilitygone/布局写完开始写逻辑代码首先在adapter定义一个方法,以便在activity中拿到数据添加进adapter中public void notifyadapter(list mylivelist,boolean isadd){if (!isadd){this.mmylivelistmylivelist;}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了 !!!以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持萬仟网。