Domanda

Ho un ListView e un adattatore che le serie alternando i colori di sfondo alle voci di elenco sovrascrittura Metodo GetView nel mio adattatore.

voglio andare oltre e vorrei per impostare ad ogni riga uno sfondo di risorse. Provo a GetView chiamare il metodo 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;}

Ma questo non lavoro, e il messaggio lancia per eccezione è File res / layout / message.xml da ID di risorsa drawable # 0x7f030004

Tutte le idee?

Grazie!

È stato utile?

Soluzione

Non è possibile impostare un file Layout di essere la risorsa di fondo. Sfondo risorsa è per un file di immagine. Ciò che si vuole è o deve essere gonfiare un file di layout diverso a seconda della posizione o per impostare il colore di sfondo in questo modo:

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

I due colori elencati sono rosso e blu luminoso brillante. Se non si ha familiarità con il modo in quei colori sono definiti, cercare codici di colore HTML.

gonfiaggio diverse file di layout non è difficile, ma richiede un codice più. In sostanza si tratta di ottenere un LayoutInflater dal contesto, e quindi chiamando inflater.inflate(context.getResources(), R.layout. .....);. Ci sono un sacco di buoni tutorial se Google in giro per loro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top