2010-05-10 22 views
1

J'ai un ListView et un adaptateur qui définit des couleurs d'arrière-plan en alternance pour les éléments de la liste en remplaçant getView Method dans mon adaptateur.ListView avec des ressources en alternance dans Android

Je veux aller plus loin et je voudrais mettre à chaque rangée un fond de ressources. J'essaie de getView appeler la méthode 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;} 

Mais ce travail pas, et je le message par exception est jette résolution de fichier/mise en page/message.xml de ressources drawable ID # 0x7f030004

Toutes les idées?

Merci!

+0

Désolé, mais pour le moment, il est difficile de comprendre l'erreur que vous rencontrez. Pourriez-vous éditer toute l'exception dans la question? – Janusz

+0

J'entoure le code avec essayer et attraper avec Exception e et imprimer dans LogCat e.getMessage() et le message que j'obtiens est: "Fichier res/layout/message2.xml de l'ID de ressource drawable # 0x7f030005" Ce que vous signifie avec éditer l'exception entière? PD: Désolé pour mon anglais! – Fran

Répondre

1

Vous ne pouvez pas définir un fichier de mise en page comme ressource d'arrière-plan. La ressource d'arrière-plan est pour un fichier image. Ce que vous voulez est soit à Gonflage un fichier de mise en page différente en fonction de la position ou de définir la couleur d'arrière-plan comme ceci:

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

Les deux couleurs sont énumérées bleu rouge vif et lumineux. Si vous ne connaissez pas la définition de ces couleurs, recherchez les codes de couleur HTML.

Le fait de gonfler différents fichiers de mise en page n'est pas difficile, mais prend plus de code. Fondamentalement, il revient à obtenir un LayoutInflater de votre contexte, puis en appelant inflater.inflate(context.getResources(), R.layout. .....);. Il y a beaucoup de bons tutoriels si vous Google autour pour eux.

+0

Désolé, je n'ai pas eu le temps de voir la solution et maintenant j'essaie d'utiliser gonfler et semble fonctionner !, mais le texte dans la vue disparaît, c'est la première intention et je suppose que si je stocke le texte avant gonfle le vue peut travailler, alors je continue d'essayer. Un grand merci !! – Fran

+0

@Fran: Le texte ne devrait pas disparaître - il sera simplement réinitialisé à ce qui est défini par défaut dans le fichier de mise en page. Si vous rencontrez des problèmes, éditez votre question pour montrer ce que vous faites. Ou si vous avez tout résolu, cliquez sur la coche à côté de cette réponse pour dire que le problème est résolu :) –

+0

Je sauvegarde le texte avant de le gonfler, puis le régler plus tard, désolé je ne savais pas sur tickmark. – Fran