/ / CheckBox Android all'interno di ListView non è selezionabile mentre onItemClickedListener funziona - android, listview, android-listview, focus, android-checkbox

Android CheckBox all'interno di ListView non è selezionabile mentre onItemClickedListener funziona - android, listview, android-listview, focus, android-checkbox

Sto usando un CheckBox nell'elemento di riga del mio ListView. È impostato il CheckBox su android:focusable="false". Quindi l'OnItemClickListener per il ListView funziona correttamente ma il checkBox sembra essere non modificabile. Come posso risolvere questo?

nel mio arrayAdapter personalizzato:

@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");
}

});
}
}

in row_item.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"/>

MODIFICARE: Ho provato a registrare un OnTouchListener, ma anche onTouch () non viene chiamato.

risposte:

1 per risposta № 1

Non penso che dovresti impostare focusable e focusableInTouchMode su false. Prova a impostare genitore su null quando si gonfia il layout

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

Spero che ti sarà d'aiuto.

Inoltre, penso che se la tua lista è lunga avrai un problema di prestazioni. Scoraggia per creare new OnClickListener(){} sopra getView(int position, View convertView, ViewGroup parent) {} se la lista ha un sacco di righe. Crea su istanza di listener impostalo per tutte le righe. Puoi usare il tag per determinare quale vista è cliccabile.