Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OnItemClick侦听器无法使用带有复选框的自定义适配器_Android_Checkbox_Listitem - Fatal编程技术网

Android OnItemClick侦听器无法使用带有复选框的自定义适配器

Android OnItemClick侦听器无法使用带有复选框的自定义适配器,android,checkbox,listitem,Android,Checkbox,Listitem,我有一个带有复选框和文本视图的自定义适配器。以下是项目的布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_c

我有一个带有复选框和文本视图的自定义适配器。以下是项目的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/standard_margin"
>

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:focusable="false"
    android:focusableInTouchMode="false"
    />
<TextView
    android:id="@+id/checkBoxDesc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView"
    android:layout_marginLeft="@dimen/new_small_margin"
    android:layout_alignBaseline="@+id/isEbank"
    android:layout_alignBottom="@+id/isEbank"
    android:layout_toRightOf="@+id/isEbank"
    android:layout_alignTop="@+id/isEbank"
    android:gravity="left"
    android:focusable="false"
    android:focusableInTouchMode="false"
    />

但是它不起作用。

您应该禁用用户交互,并将其添加到xml中

android:clickable="false"

我建议您在
getView
中这样做

@Override
public View getView(int position, View convertView, ViewGroup parent) {
 if (convertView == null) {
   LayoutInflater vi = (LayoutInflater)getSystemService(
     Context.LAYOUT_INFLATER_SERVICE);
     convertView = vi.inflate(R.layout.item_option, null);

holder = new ViewHolder();
   holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1);
   convertView.setTag(holder);

holder.name.setOnClickListener( new View.OnClickListener() {  
     public void onClick(View v) {  
      CheckBox cb = (CheckBox) v ;  
     //Check if cb is checked or not here
      cb.isChecked();
    });  
   } 
   else {
    holder = (ViewHolder) convertView.getTag();
   }
}

我添加到复选框和文本视图,但它不起作用。我也只在项目xml的根标记中添加了,它不起作用。您应该对代码“holder.optionCheckBox.setOnClickListener(new View.OnClickListener(){public void onClick(View v){};”进行注释
android:clickable="false"
@Override
public View getView(int position, View convertView, ViewGroup parent) {
 if (convertView == null) {
   LayoutInflater vi = (LayoutInflater)getSystemService(
     Context.LAYOUT_INFLATER_SERVICE);
     convertView = vi.inflate(R.layout.item_option, null);

holder = new ViewHolder();
   holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1);
   convertView.setTag(holder);

holder.name.setOnClickListener( new View.OnClickListener() {  
     public void onClick(View v) {  
      CheckBox cb = (CheckBox) v ;  
     //Check if cb is checked or not here
      cb.isChecked();
    });  
   } 
   else {
    holder = (ViewHolder) convertView.getTag();
   }
}