2010-12-21 3 views
1

J'ai un ListView et je veux que les deux premières entrées soient affichées différemment des autres. Rien d'extraordinaire, je veux qu'ils soient tous des vues de texte. Mais les deux premières entrées doivent avoir des tailles et des poids différents des autres. J'ai essayé de modifier la classe ArrayAdapter comme ceci:Premier style 2 TextViews dans Android ListView différemment

private class BusStopAdapter<T> extends ArrayAdapter<T>{ 

    public BusStopAdapter( 
    Context context, int textViewResourceId, 
    List<T> objects) 
    { 
    super(context, textViewResourceId, objects); 
    } 

    public View getView(int position, View convertView, 
    ViewGroup parent) 
    { 
    TextView toReturn = 
     (TextView)super.getView(position, convertView, parent); 
    if(position == 0){ 
    toReturn.setTextSize(12); 
    toReturn.setText("Previous Bus: " + toReturn.getText()); 
    toReturn.setPadding(0,0,0,0); 
    } 
    else if(position == 1){ 
     toReturn.setTextSize(20); 
     toReturn.setPadding(
     toReturn.getPaddingLeft(), 
     0, 
     toReturn.getPaddingRight(), 
     0 
    ); 
     toReturn.setText("Next Bus: " + toReturn.getText()); 
     toReturn.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.TOP); 
    } 
    return toReturn; 
    } 

} 

Mais cela provoque inadvertantly quelques-uns des autres textviews de prendre ces attributs spéciaux. Je pense que c'est parce que les textwords de cause sont "recyclés" dans la classe AbsListAdapter.

Répondre

1

Essayez comme ceci:

if(position == 0){ 
    toReturn.setTextSize(12); 
    toReturn.setText("Previous Bus: " + toReturn.getText()); 
    toReturn.setPadding(0,0,0,0); 
    } 
    else if(position == 1){ 
     toReturn.setTextSize(20); 
     toReturn.setPadding(
     toReturn.getPaddingLeft(), 
     0, 
     toReturn.getPaddingRight(), 
     0 
    ); 
    else 
     style it normally or whatever you want......... 
+0

Impressionnant. C'est ce qu'il a fait. J'envisageais de le faire comme ça, mais je pensais que le super.getView devrait fonctionner. Je ne pense pas. –

+0

sympa ......................... – viv

Questions connexes