Android ListView mListView.getChildAt (i) es nulo, ¿cómo resolverlo?

Creo el siguiente código:

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { for (int i = 0; i < mListView.getCount(); i++) { View callLogView = mListView.getChildAt(i); mRelativeLayout = (LinearLayout)callLogView.findViewById(R.id.myShow); if(i == position){ if(mRelativeLayout.getVisibility() == View.GONE){ mRelativeLayout.setVisibility(View.VISIBLE); } else{ mRelativeLayout.setVisibility(View.GONE); } }else{ mRelativeLayout.setVisibility(View.GONE); } } } }); 

Quiero realizar una función como cuando hago clic en un elemento de Listview , mostrará una vista y los otros elementos de Listview se ocultarán. Pero mListView.getChildAt(i) tendrá el puntero nulo después de superar mListView.getChildCount() .

¿Cómo resolver esto? ¡Gracias por adelantado!

AdapterView.getCount () devuelve el número de elementos de datos, que puede ser mayor que el número de vistas visibles, por eso está obteniendo una excepción de puntero nulo, porque está intentando encontrar vistas que no existen en los elementos visibles de ListView actuales.

Para resolver este problema primero necesitará encontrar el primer elemento visible en el ListView usando getFirstVisiblePosition() y el último elemento visible usando getLastVisiblePosition() . Cambie la condición del bucle como:

 int num_of_visible_view=mListView.getLastVisiblePosition() - mListView.getFirstVisiblePosition(); for (int i = 0; i < num_of_visible_view; i++) { // do your code here } 

No puede implementar esto en onItemClick.

Como puede acceder solo al niño visible no todo niño.

Lo que puede hacer es onItemClick

Puede enviar la posición en el adaptador

Y luego establecer la lógica allí en getView también cambiar vista

Y actualizar el adaptador en listview, o notificar los cambios.

  • Android ListView: No se puede centrar los elementos en el inicio, debido a Null Pointer Exception
  • OnTouchListener evita comentarios visuales
  • Android: deshabilitar resaltado en listView haz clic
  • Quiero medir la altura del ListView (getHight () = 0)
  • Android clicable Widget con ListView no se puede hacer clic en ListItems
  • Cómo actualizar ListView en fragmento que se rellena con BaseAdapter?
  • Alinear dos TextViews, una izquierda a la otra derecha, en un ListView sin estirar los fondos
  • ListView y SharedPreferences de opción múltiple
  • Encontrar la ubicación de píxeles del elemento ListView parece devolver un valor incorrecto
  • Listview con inflación de diseño diferente para cada fila
  • ListFragment aparece dos veces en el teléfono
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.