¿Cómo conseguir el foco del niño de ListView?

Tengo un ListView en el cual agrego artículos de la fila dinámicamente. Cada fila tiene un no de childs. Ahora estoy fijando en los oyentes del tecleo en estos childs, y en ellos me pide guardar estos artículos del niño finales, él trabaja muy bien con ellos y está bien hacer esto mientras que estoy creando una clase en cada uno en el oyente del tecleo.

Aquí isFree es un checkbox final.

isFree.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton arg0, boolean arg1) { // TODO Auto-generated method stub if (isFree.isChecked()){...} } }); 

Pero no lo siento como una buena práctica de programación, quiero usar alguna función que debe detectar qué niño fue hecho clic y luego debería ser capaz de acceder a su fila usando getParent y luego sus elementos hermanos utilizando getChildAt (índice) Así que, he utilizado esta:

 isFree.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton arg0, boolean arg1) { // TODO Auto-generated method stub CheckBox tv=(CheckBox) getCurrentFocus(); TableRow row = (TableRow)tv.getParent(); TextView tv1=(TextView) row.getChildAt(5); if (tv.isChecked()){...} } }); 

Pero cuando lo uso, en el tema enfocado realmente devuelve el listview, pero quiero elemento enfocado en la fila.

usted puede conseguir qué niño de listview fue chascado con onItemClickListener, pero si usted quiere hacer una cierta acción en una fila que tiene cierta caja de cheque o alguna otra opinión clickable y usted desea realizar una cierta acción en esos tecleo entonces pienso que usted tiene que utilizar tecleo oyentes en esas vistas sí mismo.

pero si desea obtener listitem fila al hacer clic en esas vistas individuales, puede utilizar el método setTag de la clase de vista para almacenar el índice y, a continuación, obtener el elemento de la fila de ese índice en sus oyentes de clic.

 public view getView(int position, View convertView, ..) { .... .... .... // your code convertView.setTag(position); return convertView; } isFree.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton arg0, boolean arg1) { // TODO Auto-generated method stub if (arg0.isChecked()){ int index = arg0.getTag(); View v = listview.getItemAtPosition(index); // or get the adapter get data list from it and then index it. } } }); 

Tenga en cuenta que: No he usado el método de cambio oncheckedchange libre final.

En el método setOnCheckedChangeListener , el primer parámetro es un CompoundButton que es una setOnCheckedChangeListener de CheckBox . Así que, en realidad, arg0 es tu casilla de verificación. Utilícelo para recuperar el elemento de lista padre y hacer sus cosas.

 isFree.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton arg0, boolean arg1) { // TODO Auto-generated method stub TableRow row = (TableRow)arg0.getParent(); TextView tv1=(TextView) row.getChildAt(5); if (arg0.isChecked()){...} } }); 
  • La altura de ListView llena toda la pantalla, aunque se define como wrap_content
  • Android - Agregar y mostrar elementos a ListView uno a la vez usando un ArrayAdapter
  • ¿Cómo puedo hacer que un elemento específico del cajón de navegación aparezca seleccionado?
  • Animar agregar / quitar elementos de ListView con CursorAdapter es posible?
  • CheckedTextView no marca de selección de dibujo cuando se selecciona mediante programación
  • Disparar un PopupMenu con botones dentro de un elemento ListView
  • Agregar la barra de progreso en la parte inferior de una vista de lista
  • Detección de la dirección de desplazamiento en el adaptador (arriba / abajo)
  • ¿Por qué la aplicación Android de Facebook se desplaza tan suavemente
  • Cómo restablecer listview después de searchview se cierra en android?
  • Mostrando un botón de eliminación en el desplazamiento de un listview para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.