我有一个带有复选框的Listview,当单击检查区域时,布局的onClick事件不起作用

时间:2017-06-25 11:07:21

标签: android listview onclicklistener

我有List view text boxcheckbox

我使用视图持有人实现了列表视图,并且我创建了复选框

  holder.getCheckbox().setEnabled(false);

并制作复选框XML布局

 <com.mobello.shift.widget.CustomTextView
    android:id="@+id/list_title"
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:gravity="center_vertical"
    android:paddingEnd="3dip"
    android:paddingLeft="5dip"
    android:paddingRight="5dip"
    android:textColor="@color/black"
    android:textSize="@dimen/dimen_text_size_14"
    android:textStyle="normal"
    app:typeface="@string/light" />

<CheckBox
    android:id="@+id/chkbox_value"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_gravity="center"
    android:layout_marginEnd="15dp"
    android:layout_marginRight="15dp"
    android:button="@drawable/blue_check_box_bg"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:gravity="center" />

一切都很好但是当我点击布局时,我设置复选框为true 但如果我点击检查区域,则点击布局不会触发。

这是适配器的获取视图

     public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        try {
            if (convertView == null) {
                inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.selection_row_view, null);
                holder = new ViewHolder(convertView);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.getListTitle().setText(list.get(position).getTitle());
            holder.getCheckbox().setChecked(list.get(position).isCheckBok());
            holder.getCheckbox().setEnabled(false);
            if(flagPosition == Constant.FLAG_FILTER_INDUSTRY){
                holder.getListTitle().setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
//                        int pos = view.getId();
                        if (list.get(position).isCheckBok()) {
                            list.get(position).setCheckBok(false);
                            if (SelectionActivity.selectedNameList.size() > 0) {
                                SelectionActivity.selectedNameList.remove(list.get(position).getTitle());
                                SelectionActivity.selectedIdList.remove(list.get(position).getId());
                            }
                        } else {
                            list.get(position).setCheckBok(true);
                            SelectionActivity.selectedNameList.add(list.get(position).getTitle());
                            SelectionActivity.selectedIdList.add(list.get(position).getId());
                        }

                        notifyDataSetChanged();
                    }
                });
            }

        } catch (Exception e) {
            Helper.setErrorLog(context,e);
        }
        return convertView;
    }  

1 个答案:

答案 0 :(得分:0)

我不确定我理解你是否正确,但我会尝试:

1)您需要在onClickListener()holder

上设置convertView

2)然后检查Checkbox.的当前状态如果已经检查过,则将其设置为取消选中,否则将其设置为选中状态。