android gridview中的自定義多選
阿新 • • 發佈:2020-11-13
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>() { @Overridepublic 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的效果