ListViews avec plusieurs mises en page d'éléments
J'ai un ListView
sur mon ListActivity
et j'aimerais les lignes de la ListView
de 1 à 3 différentes mises en page. Le premier élément de ma liste va toujours utiliser la mise en page Une, le deuxième point de ma liste va toujours utiliser la mise en page B, et tous les autres éléments vont utiliser la mise en page C.
Voici mon getView fonction:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//get the View for this list item
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
switch (position) {
case 0:
v = vi.inflate(R.layout.layout_A, parent, false);
break;
case 1:
v = vi.inflate(R.layout.layout_B, parent, false);
break;
default:
v = vi.inflate(R.layout.layout_C, parent, false);
break;
}
}
switch (position) {
case 0:
TextView txtLabel1 = (TextView)findViewById(R.id.label1);
TextView txtLabel2 = (TextView)findViewById(R.id.label2);
if (txtLabel1 != null) {
txtLabel1.setText("sdfasd");
}
if (txtLabel2 != null) {
txtLabel2.setText("dasgfadsasd");
}
break;
default:
break;
}
//return the created view
return v;
}
R.id.label1
et R.id.label2
sont TextViews
sur R.layout.layout_A
. Cependant, txtLabel1
et txtLabel2
sont nulles après avoir essayé de les définir. Pourquoi?
Je passais à travers ce code dans le débogueur et gonflés à la bonne mise en page (R.layout.layout_A
) et est tombé dans les cas ci-dessous pour définir le R.id.label1
et R.id.label2
texte.
Aussi, si il ya une meilleure façon de le faire, s'il vous plaît laissez-moi savoir.
source d'informationauteur Andrew | 2010-08-05
Vous devez vous connecter pour publier un commentaire.
Ressemble à "la Vue v = convertView; if (v == null) {..." est un problème. Vous devriez re-créer la vue à chaque fois parce que vous ne connaissez pas le type de donnée de vue. Aussi, vous pouvez utiliser viewholder approche plus efficace de la mise en œuvre. Vous pouvez trouver quelques idées dans ce blog: http://codinglines.frankiv.me/post/18486197303/android-multiple-layouts-in-dynamically-loading