CheckBox and setOnItemClickListener not working in android

前端 未结 4 981
时光说笑
时光说笑 2021-01-28 02:45

I am using ListView with CheckBox. I have selected only one CheckBox but it\'s automatically selected into Multiple Rows using Scrol

相关标签:
4条回答
  • 2021-01-28 03:26

    To make your listview focusable, remove focus from the items themselves. Add the following after instantiating listview:

    listview.setItemsCanFocus(false);
    

    Then add the following to your list_item.xml

    <CheckBox
        android:id="@+id/lock_File_CheckBox"
        android:focusable="false"
        android:focusableInTouchMode="false"/>
    

    With this, your setOnItemClickListener() will get called

    0 讨论(0)
  • 2021-01-28 03:33

    Focusable view in the list item prevents the firing of onListItemClick() in the ListActivity when the list item is clicked. But the effect of onListItemClick() can be achieved with OnClickListener. Read here more about this

    0 讨论(0)
  • 2021-01-28 03:35

    You can get the instance of CheckBox inside onItemClick() by using setTag() and getTag(). You can setTag the CheckBox instance inside your getView() method as

    convertView.setTag(R.id.check, viewHolder.checkbox);
    

    And get the instance inside onItemClick() using,

    CheckBox checkbox = (CheckBox) v.getTag(R.id.check);
    

    If you have any further query you can check my blog post.

    0 讨论(0)
  • 2021-01-28 03:36

    Don't use onClick. Use OnCheckedChange

    holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                if (isChecked) {
                    doSomethingWithCheckedState(compoundButton);
                } else {
                    doSomethingWithUnCheckedState(compoundButton);
                }
            }
        });
    

    Keep in mind that CheckBox inherit from CompoundButton for ICS's switch compatibility.

    0 讨论(0)
提交回复
热议问题