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()
.
- ListView no se actualiza hasta que el teclado esté oculto
- El último elemento de Listview está cortado
- Android "deslizar de izquierda a derecha para eliminar", gesto en el elemento de lista, estilo ICS
- ListView 2 filas e icono por artículo en Android
- Cambiar Estado del conmutador sin animación
¿Cómo resolver esto? ¡Gracias por adelantado!
- Cambiar el color de fuente de TextView cuando se selecciona el elemento ListView
- Android anima todos los elementos de vista de lista simultáneamente
- Android personalizado listview muy lento al desplazarse
- Listview error: "Su contenido debe tener un ListView cuyo atributo id es 'android.R.id.list'"
- Establecimiento de diferentes colores de divisor para cada elemento en la vista de lista
- No se puede encontrar el recurso, No se identifica el elemento que falta
- Deslice la animación expandida en android
- ListView divisores en la parte superior e inferior del elemento ListView
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.
- ¿Cómo recibe una llamada saliente en un receptor de difusión
- Destruye DialogFragment en onCreateDialog ()