Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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 ListFragment_Android_Android Layout_Android Fragments_Android Ui_Android Listfragment - Fatal编程技术网

带有自定义图像复选框的Android ListFragment

带有自定义图像复选框的Android ListFragment,android,android-layout,android-fragments,android-ui,android-listfragment,Android,Android Layout,Android Fragments,Android Ui,Android Listfragment,我使用的是一个Listfragment,它有一个复选框,其中包含在选中状态下更改的自定义图像。但“onListItemClick”功能只有在其布局中将复选框分配给android:focusable=false和android:clickable=false时才起作用。 在这种情况下,复选框的自定义图像更改不起作用。是否有一种方法可以同时完成这两个操作。请提供帮助 public class SympFragment extends ListFragment implements OnClickLi

我使用的是一个Listfragment,它有一个复选框,其中包含在选中状态下更改的自定义图像。但“onListItemClick”功能只有在其布局中将复选框分配给android:focusable=false和android:clickable=false时才起作用。 在这种情况下,复选框的自定义图像更改不起作用。是否有一种方法可以同时完成这两个操作。请提供帮助

public class SympFragment extends ListFragment implements OnClickListener {
private ListView lv;
private String listview_array[] = {
        "Text1",
        "Text2",
        "Text3",
        "Text4",
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_symp, container, false);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
            R.layout.ch_row, listview_array);
    setListAdapter(adapter);

    return rootView;
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    switch( position )
    {
        case 0:    Toast.makeText(getActivity().getApplicationContext(), "Well Done!", Toast.LENGTH_LONG).show();
            break;

    }
}
}

布局:

<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/chcheckbox"
     android:textSize="15sp"
     android:textColor="#ffffff"
     android:layout_height="wrap_content"
     android:layout_width="fill_parent"
     android:button="@drawable/chselector"
     android:drawableLeft="@android:color/transparent"
     android:focusable="false"
     android:clickable="false"
     android:padding="8dp"
  />
选择器xml:

<?xml version="1.0" encoding="utf-8"?>

在drawable中创建xml文件custom_checkbox.xml:

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/unselected" android:state_checked="false"/>
    <item android:drawable="@drawable/selected" android:state_checked="true"/>
    <item android:drawable="@drawable/unselected"/>    
</selector>

似乎“onListItemClick”从不接受复选框输入。因此,复选框必须设置为android:focusable=false和android:clickable=false。 但复选框可通过以下方式触发:

    @Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    String item = (String) getListAdapter().getItem(position);
    Toast.makeText(getActivity(), item + " selected", Toast.LENGTH_LONG).show();
    CheckBox chcheckbox;
    switch(position){
        case 0:

            chcheckbox = (CheckBox) v.findViewById(R.id.chcheckbox);
            if (chcheckbox.isChecked() == false) {
                chcheckbox.setChecked(true);
            } else {
                chcheckbox.setChecked(false);
            } break;

        case 1:

            chcheckbox = (CheckBox) v.findViewById(R.id.chcheckbox);
            if (chcheckbox.isChecked() == false) {
                chcheckbox.setChecked(true);
            } else {
                chcheckbox.setChecked(false);
            } break;
    }

}

我不确定这是否是最佳实践。但是这个调整非常有用,因为我没有找到任何其他解决方案。

没有。它仍然不起作用。onListItemClickListener只有在我将focusable和clickable of复选框设置为false时才起作用。如果我这样做..选择器不工作。我现在已经附上了编码部分。
    android:button="@drawable/custom_checkbox"
    @Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    String item = (String) getListAdapter().getItem(position);
    Toast.makeText(getActivity(), item + " selected", Toast.LENGTH_LONG).show();
    CheckBox chcheckbox;
    switch(position){
        case 0:

            chcheckbox = (CheckBox) v.findViewById(R.id.chcheckbox);
            if (chcheckbox.isChecked() == false) {
                chcheckbox.setChecked(true);
            } else {
                chcheckbox.setChecked(false);
            } break;

        case 1:

            chcheckbox = (CheckBox) v.findViewById(R.id.chcheckbox);
            if (chcheckbox.isChecked() == false) {
                chcheckbox.setChecked(true);
            } else {
                chcheckbox.setChecked(false);
            } break;
    }

}