He pasado literalmente dos días intentando solucionar este problema. Si alguien pudiera ayudar, estaría masivamente agradecido.Vista de lista personalizada con dos botones en cada fila
lo que estoy tratando de lograr:
Tener un ListView, por lo que el jugador puede añadir nuevas entradas (jugadores), a través de un campo de texto (por el nombre del jugador), y luego un botón de envío. En cada campo de ListView, muestro el nombre del jugador, y luego dos ImageButtons. Uno con un símbolo masculino y otro con un símbolo femenino. El símbolo masculino se activa por defecto, y el usuario puede configurar el reproductor como hombre o mujer al alternar entre el botón masculino o femenino. Finalmente, una vez que el usuario pasa a la siguiente pantalla (una nueva actividad), la aplicación guardará los nombres de los jugadores y el sexo adjunto en alguna forma de almacenamiento y pasará a la siguiente actividad.
lo que he conseguido:
que tienen un simple adaptador de matriz, que en el reproductor de añadir un nuevo nombre de jugador a la lista, corro el notifyDataSetChanged() sobre ella. El adaptador también está configurado para usar un archivo de diseño de fila personalizado. Dentro del archivo de diseño, se ve así:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<RelativeLayout android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/relativeLayout1" android:layout_marginTop="5dp">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/playerName"
android:layout_centerVertical="true" android:text="Derp" android:textStyle="bold" android:layout_marginLeft="5dp" android:textSize="22dp" android:textColor="@color/male_blue"></TextView>
<ImageButton android:layout_height="60dp"
android:layout_width="60dp" android:onClick="maleClickHandler"
android:src="@drawable/male_icon_settings" android:id="@+id/buttonA" android:layout_alignParentRight="true" android:layout_marginRight="65dp"></ImageButton>
<ImageButton android:onClick="femaleClickHandler"
android:layout_height="60dp" android:layout_width="60dp" android:id="@+id/buttonB"
android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:src="@drawable/female_icon_settings"></ImageButton>
</RelativeLayout>
</LinearLayout>
Los dos botones en cada referencia de fila a métodos en el archivo de clase. Aquí está mi código para esto:
public void maleClickHandler(View v) {
RelativeLayout vwParentRow = (RelativeLayout) v.getParent();
ImageButton maleButton = (ImageButton) vwParentRow.getChildAt(1);
maleButton.setImageDrawable(getResources().getDrawable(
R.drawable.male_icon_selected));
vwParentRow.refreshDrawableState();
}
public void femaleClickHandler(View v) {
RelativeLayout vwParentRow = (RelativeLayout) v.getParent();
ImageButton femaleButton = (ImageButton) vwParentRow.getChildAt(2);
femaleButton.setImageDrawable(getResources().getDrawable(
R.drawable.female_icon_selected));
vwParentRow.refreshDrawableState();
}
todavía no he implementado ningún interconectividad entre estos dos botones, para permitir que sólo uno sea activo a la vez, o uno que incluso untoggle, ya que creo que podría estar tomando el enfoque equivocado por completo.
El problema:
Al añadir nuevas entradas a la lista, DESPUÉS alternar uno y/u otro sexo masculino/botones femeninos, las cosas se ponen realmente con errores, y el icono de hombre/mujer toggled puede mover como debería ser, junto con la secuencia de jugador adjunta, o más probable, aquellos activados permanecerán en esa primera fila (posición de la matriz 0 de la lista), o incluso pasarán a la posición de la segunda lista, Y se copiarán como asignados a la fila encima.
¿Cómo puedes ayudar ...?
He adjuntado una imagen abajo de mi pantalla, desde el emulador, para ayudar a ilustrar mis puntos Screenshot!
Creo que puede ser que tenga que utilizar algún tipo de adaptador personalizado; He leído mucho sobre el tema, pero no puedo encontrar nada relevante para lo que estoy tratando de lograr, así que si puede orientarme en la dirección correcta, o incluso tratar de armar la solución más básica para este tipo de problema, estaría muy agradecido.
Finalmente, cuando empiece a funcionar, ¿qué tipo de almacenamiento sería mejor para almacenar los nombres de los jugadores y su sexo? Me gustaría que el usuario pueda mantener la lista de jugadores después de que salga de la aplicación y la reinicie.
¡Gracias por cualquier ayuda! :)
Gracias, sospeché que tenía que hacer algo en esta línea; gracias por aclarar esto maravillosamente :) –