我有List view
text box
和checkbox
我使用视图持有人实现了列表视图,并且我创建了复选框
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;
}
答案 0 :(得分:0)
我不确定我理解你是否正确,但我会尝试:
1)您需要在onClickListener()
或holder
convertView
2)然后检查Checkbox.
的当前状态如果已经检查过,则将其设置为取消选中,否则将其设置为选中状态。