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的效果

浙公网安备 33010602011771号