/ / Android CheckBox всередині ListView не можна натискати, коли працює onItemClickedListener - прапорець Android, listview, android-listview, focus, android-checkbox

Android CheckBox всередині ListView не можна натискати, коли працює onItemClickedListener - прапорець Android, listview, android-listview, focus, android-checkbox

Я використовую CheckBox в елементі рядка мого ListView. Встановити CheckBox на android:focusable="false". Таким чином, OnItemClickListener для ListView працює коректно, але checkBox, здається, не піддається натисканню. Як я можу це вирішити?

в моєму користувальницькому масивіAdapter:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
FileHolder holder;
if(v == null){
LayoutInflater inflater = ((Activity)getContext()).getLayoutInflater();
v = inflater.inflate(layoutResourceId, parent, false);
holder = new FileHolder();
holder.isChecked = (CheckBox)v.findViewById(R.id.checkBox1);
v.setTag(holder);
holder.isChecked.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
Log.d("common", "checked");
}

});
}
}

в рядку_ітем.xml:

<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:button="@drawable/checkbox"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="true"/>

EDIT: Я намагався зареєструвати OnTouchListener, але на toouch () також не називається.

Відповіді:

1 для відповіді № 1

Я не думаю, що вам слід встановити фокусну увагу та фокусувати InTouchMode на помилкові. Спробуйте встановити батьківський номер на нуль, коли ви роздумуєте макет

v = inflater.inflate(layoutResourceId, null, false);

Сподіваюся, це допоможе.

Також я думаю, що якщо ваш список довгий, то ви матимете проблеми з продуктивністю. Це перешкоджає створювати new OnClickListener(){} на getView(int position, View convertView, ViewGroup parent) {} якщо у списку є багато рядків. Створити на екземплярі прослуховувача встановити його для всіх рядків. Ви можете використовувати тег, щоб визначити, який вигляд натискає.