Я використовую 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) {}
якщо у списку є багато рядків. Створити на екземплярі прослуховувача встановити його для всіх рядків. Ви можете використовувати тег, щоб визначити, який вигляд натискає.