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 № 1Non 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.