listView多选功能

 

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                listViewAdapter.getIsSelected().put(i, null == listViewAdapter.getIsSelected().get(i) ? true : !listViewAdapter.getIsSelected().get(i));
                listViewAdapter.notifyDataSetChanged();
            }
        });

 回写数据

 //DeliveryGridViewAdapter
    /*public void refreshShowCacheSelect(List<BeanDetailFirst.Deliveryaddresslist> items, String cacheFlagStr){
        if(!TextUtils.isEmpty(cacheFlagStr)){
            String[] cacheFlagAry = cacheFlagStr.split(";");
            if(null != cacheFlagAry && cacheFlagAry.length > 0){
                for (int i = 0; i < items.size(); i++){//NumberFormatException ok
                    boolean isInFlag = false;
                    for(int j=0;j<cacheFlagAry.length;j++){
                        if(items.get(i).getAddressId() == StephenTool.stringToInt(cacheFlagAry[j])){
                            isInFlag = true;
                            break;
                        }//end of if
                    }//end of for
                    isSelected.put(i, isInFlag);
                }//end of for
            }else{
                for (int i = 0; i < items.size(); i++)isSelected.put(i, items.get(i).getAddressId() == Integer.parseInt(cacheFlagStr));
            }
        }else{
            for (int i = 0; i < items.size(); i++)isSelected.put(i, false);
        }
    }*/

 

public class ListViewAdapter extends BaseAdapter {
    private HashMap<Integer, Boolean> isSelectedMap;//用来控制checkBox的选中状况
    private Context context;
    private List<String> items;
    private LayoutInflater inflater = null;//用来导入布局

    public ListViewAdapter(Context context, List<String> items, String cacheFlagStr) {
        this.context = context;
        isSelectedMap = new HashMap<Integer, Boolean>();
        inflater = LayoutInflater.from(context);
        this.items = items;
        if(!TextUtils.isEmpty(cacheFlagStr)){
            String[] cacheFlagAry = cacheFlagStr.contains(";") ? cacheFlagStr.split(";") : cacheFlagStr.split(",");
            if(null != cacheFlagAry && cacheFlagAry.length > 0){
                for (int i = 0; i < items.size(); i++){
                    boolean isInFlag = false;
                    for(int j=0;j<cacheFlagAry.length;j++){
                        if((i+1) == StephenTool.stringToInt(cacheFlagAry[j])){
                            isInFlag = true;
                            break;
                        }//end of if
                    }//end of for
                    isSelectedMap.put(i, isInFlag ? true : null);
                }//end of for
            }else{
                for (int i = 0; i < items.size(); i++){
                    boolean isInFlag = (i+1) == Integer.parseInt(cacheFlagStr);
                    isSelectedMap.put(i, isInFlag ? true : null);
                }//end of for
            }
        }else{
            for (int i = 0; i < items.size(); i++)isSelectedMap.put(i, null);
        }
    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.item_listview_pay_type, null);
            holder.tv_floor_num = (TextView) convertView.findViewById(R.id.tv_floor_num);
            holder.item_floor_image = (CheckBox) convertView.findViewById(R.id.item_floor_image);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.tv_floor_num.setText(items.get(position));
        if(null == isSelectedMap.get(position)){
            holder.tv_floor_num.setTextColor(context.getResources().getColor(R.color.color9));
            holder.item_floor_image.setButtonDrawable(R.drawable.transparent);
            holder.item_floor_image.setChecked(false);
        }else{
            holder.tv_floor_num.setTextColor(context.getResources().getColor(R.color.color5));
            holder.item_floor_image.setButtonDrawable(R.drawable.check_box_pay_type_selector);
            holder.item_floor_image.setChecked(isSelectedMap.get(position));
        }
        return convertView;
    }

    public static class ViewHolder {
        public TextView tv_floor_num;
        public CheckBox item_floor_image;
    }

    public HashMap<Integer, Boolean> getIsSelectedMap() {
        return isSelectedMap;
    }
}
<CheckBox
            android:id="@+id/item_floor_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:button="@drawable/check_box_pay_type_selector"
            android:clickable="false"
            android:focusable="false"
            android:focusableInTouchMode="false" />

或是在item根布局加上

android:descendantFocusability="blocksDescendants"

或者在对button或checkbox添加

focusable="false"

android:clickable="false"

android:focusableInTouchMode="false"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值