1. 程式人生 > 實用技巧 >android gridview中的自定義多選

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