Pregunta

Tengo un ListView y un adaptador que los conjuntos alternando los colores de fondo a los elementos de la lista de sobreescritura getView Método en mi adaptador.

quiero ir más allá y me gustaría establecer para cada fila un fondo de recursos. Trato de llamar al método getView setBackgroundResource:

private int[] messages = new int[] {R.layout.message,R.layout.message2};
//...
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
int MessagePos = position % messages.length;
v.setBackgroundResource(messages[MessagePos]);
return v;}

Pero esto no trabajo, y lanza el mensaje de excepción es el archivo res / layout / message.xml de ID de recurso dibujable # 0x7f030004

¿Alguna idea?

Gracias!

¿Fue útil?

Solución

No se puede establecer un layout archivo a ser el recurso de fondo. Antecedentes de recursos es un archivo de imagen. Lo que queremos es ya sea para ser inflado de un archivo de diseño diferente en función de la posición o para ajustar el color de fondo de este modo:

int colors = {0xFFFF0000, 0xFF0000FF};
v.setBackgroundColor(colors[MessagePos]};

Los dos colores mencionados son rojo azul brillante y luminoso. Si no está familiarizado con cómo se definen los colores, buscar los códigos de color HTML.

inflar los distintos archivos de diseño no es difícil, pero lleva un código más. Básicamente se trata de conseguir un LayoutInflater de su contexto, y luego llamar a inflater.inflate(context.getResources(), R.layout. .....);. Hay un montón de buenos tutoriales si Google alrededor para ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top