android gridview中的自定义多选


addTagResBeanLCommonAdapter = new LCommonAdapter<GetTagResBean.DataBean>(mContext, R.layout.gridview_item_floor) { 加载gridview根布局xml文件 @Override protected void convert(LViewHolder viewHolder, GetTagResBean.DataBean item, int position) { viewHolder.setText(R.id.tv_floor_num, item.getTagName());    //声明从接口里获得的字段 viewHolder.getView(R.id.item_floor_image).setSelected(item.isIscheck());  //显示图片 // viewHolder.getConvertView().setSelected(item.isIscheck()); } }; gridView.setAdapter(addTagResBeanLCommonAdapter);     addTagResBeanLCommonAdapter.setOnItemClickListener(new LMultiItemTypeAdapter.OnItemClickListener<GetTagResBean.DataBean>() { @Override public void onItemClick(LViewHolder holder, GetTagResBean.DataBean data, int position) { LogUtils.i("你点击了item"); if (data.isIscheck()) { data.setIscheck(false); } else { data.setIscheck(true); } addTagResBeanLCommonAdapter.notifyDataSetChanged(); } });
GetTagResBean为本地新建的实体类,里面声明了一个Boolean类型的ischeck,默认为false,
在点击item这里用if做了判断,如果data是false,即未选中状态,则把ischeck置为false,反之data如果是true则把ischeck置为true,
视图界面则使用
 viewHolder.getView(R.id.item_floor_image).setSelected(item.isIscheck());

做判断,item.isIscheck()即为获取到的true或者false,此时

布局文件里

<ImageView
        android:id="@+id/item_floor_image"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:clickable="false"
        android:focusable="false"
        android:background="@drawable/checkbox_appcolor_selector"
        >
    </ImageView>

自己定义了一个背景样式

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/checked_b" android:state_selected="true"/>
    <item android:drawable="@drawable/uncheck_no" android:state_selected="false"/>

</selector>

在这里标明了true是什么样的图片,false是什么样的图片

实现效果点击gridwiew则为true的图片,再点击则为false的图片

未点击状态

 

 

点击状态

 

并可以多次点击实现类似于checkbox的效果

 

posted @ 2020-11-13 19:24  null_lii  阅读(300)  评论(0)    收藏  举报