/ / Android CheckBox dentro ListView não é clicável enquanto onItemClickedListener funciona - android, listview, android-listview, foco, android-checkbox

Android CheckBox dentro de ListView não é clicável enquanto onItemClickedListener funciona - android, listview, android-listview, foco, android-checkbox

Eu estou usando um CheckBox no item de linha do meu ListView. É definido o CheckBox para android:focusable="false". Portanto, o OnItemClickListener para o ListView funciona corretamente, mas a caixa de seleção parece estar desmarcada. Como posso resolver isso?

no meu arrayAdapter personalizado:

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

});
}
}

em 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"/>

EDITAR: Eu tentei registrar um OnTouchListener, mas onTouch () também não foi chamado.

Respostas:

1 para resposta № 1

Eu não acho que você deve definir focusable e focusableInTouchMode para false. Tente definir o pai como nulo quando você inflar o layout

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

Espero que ajude.

Também acho que, se a sua lista for longa, você terá um problema de desempenho. Desencoraja criar new OnClickListener(){} em getView(int position, View convertView, ViewGroup parent) {} se você listar tem muita fila. Crie na instância do ouvinte, defina-o para todas as linhas. Você pode usar a tag para determinar qual visualização é clicada.