当ListActivity的行中含有checkbox和button等会自动得到焦点的控件时,ListActivity的onListItemClick会不响应,解决办法有二:
(原文地址:http://www.cnblogs.com/rocky_yi/archive/2011/03/14/ListActivity_setFocusable.html , 转载请注明出处!)
方法一:
如果自定义了adapter,则可以在bindView()函数中调用checkbox和button的setFocusable(false)和setFocusableInTouchMode(false);,另它们失去焦点:
public
void
bindView(View view, Context context, Cursor cursor)
{
// ...
checkbox.setFocusableInTouchMode( false );
checkbox.setFocusable( false );
// ...
{
// ...
checkbox.setFocusableInTouchMode( false );
checkbox.setFocusable( false );
// ...
}
方法二:
自定义一个不会自动获得焦点的checkbox:
public
class
ExtendedCheckBoxListView
extends
LinearLayout {
private TextView mText;
private CheckBox mCheckBox;
public ExtendedCheckBoxListView(Context context, ExtendedCheckBox aCheckBoxifiedText) {
super (context);
// …
mText.setFocusable( false );
mText.setFocusableInTouchMode( false );
mCheckBox.setFocusable( false );
mCheckBox.setFocusableInTouchMode( false );
// …
}
private TextView mText;
private CheckBox mCheckBox;
public ExtendedCheckBoxListView(Context context, ExtendedCheckBox aCheckBoxifiedText) {
super (context);
// …
mText.setFocusable( false );
mText.setFocusableInTouchMode( false );
mCheckBox.setFocusable( false );
mCheckBox.setFocusableInTouchMode( false );
// …
}
}