SingleChoiceAdapter.java 2.31 KB
package com.cnlive.goldenline.ui.base;

import android.content.Context;
import android.util.SparseBooleanArray;
import android.view.View;
import android.view.ViewGroup;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Description:
 * Created on 2017/3/7
 * Author : 萧
 */
public class SingleChoiceAdapter<T> extends BaseListViewAdapter<T> {

    public SparseBooleanArray isSelected;

    public Map<String, String> selectedData = new HashMap<String, String>();

    public SingleChoiceAdapter(Context context) {
        super(context);
    }

    @Override
    public void setData(List<T> dataList) {
        super.setData(dataList);
        initSelectedItem(-1);
    }

    public void setData(List<T> dataList, int selectPosition) {
        super.setData(dataList);
        initSelectedItem(selectPosition);
    }

    public void initSelectedItem(int id) {
        isSelected = new SparseBooleanArray();

        if (dataList != null && id != -1) {
            for (int i = 0; i < dataList.size(); i++) {
                if (id == i) {
                    isSelected.put(i, true);
                }
            }
        }
        notifyDataSetChanged();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return super.getView(position, convertView, parent);
    }

    public Map<String, String> getSelectedData() {
        return selectedData;
    }

    public SparseBooleanArray getIsSelected() {
        return isSelected;
    }

    public void setSelected(int position) {
        if (isSelected == null) isSelected = new SparseBooleanArray();
        isSelected.clear();
//        for (int i = 0; i < isSelected.size(); i++) {
//            isSelected.put(i, false);
//        }
        if (position >= 0 && position < getCount()) {
            // 再将当前选择CB的实际状态
            isSelected.put(position, true);
        } else {
            selectedData.clear();
        }
        notifyDataSetChanged();
    }

    public void cancelSelectedState(int position) {
//        for (int i = 0; i < isSelected.size(); i++) {
//            isSelected.put(i, false);
//        }
        isSelected.clear();
        notifyDataSetChanged();
    }

    public void setIsSelected(SparseBooleanArray isSelected) {
        this.isSelected = isSelected;
    }


}