2016-01-18 17 views
-3

Faire un tableau comme indiqué ci-dessous comme aucun des élément de la liste, je suppose u ont cinq articles:Comment est-il possible 5 couleurs différentes de chaque ligne dans la liste si les éléments sont plus de dix dans ListView dans Android?

int[] color_arr={Color.BLUE,Color.CYAN,Color.YELLOW,Color.GREEN,Color.RED}; 

et l'utiliser dans la méthode getView() d'adaptateur personnalisé comme ci-dessous: -

public View getView(int position, View convertView, ViewGroup parent) 
    { 

    LayoutInflater inflater = getLayoutInflater(); 
    View row=convertView; 

    row = inflater.inflate(R.layout.listview_custome, parent, false); 
    row.setBackgroundColor(color_arr[position]);// this set background color 

    TextView textview = (TextView) row.findViewById(R.id.tv_list); 
    ImageView imageview = (ImageView) row.findViewById(R.id.iv_list); 

    textview.setText(data_text[position]); 
    imageview.setImageResource(data_image[position]); 

    return (row); 

    } 

Ma question est-ce que si plus de 5 éléments dans l'élément de la liste comment il est possible 5 couleurs différentes de chaque ligne dans listview?

+1

Oui, cela devrait être possible. Quel est le problème avec votre code? – Gavriel

+0

définir la variable dans globle int count = 0; Modifier cette ligne row.setBackgroundColor (color_arr [count]); // définir cette couleur d'arrière-plan if (count> = 5) { \t count = 0; } count ++; – Saif

+0

Ce code fonctionne correctement si 5 éléments sont disponibles dans listView, si plus de 5 éléments sont disponibles, puis comment définir 5 couleurs d'arrière-plan dans listView? –

Répondre

3
row.setBackgroundColor(color_arr[position % color_arr.length]); 
6

vous avez 5 valeurs tableau, donc si la liste est d'avoir plus de 5 articles sans aucun doute il va se planter, car il ne peut pas trouver data_image[5]

Vous pouvez utiliser % opérateur

imageview.setBackgroundColor(data_image[position % 5]); 

Pour 0 -4ème position cela fonctionnera comme son fonctionnement maintenant, pour la 5ème position il mettra la couleur de la position 0, pour la 6ème position il mettra la couleur de la position 1 et ainsi de suite ...

1

Essayez ceci,

row.setBackgroundColor(color_arr[position % color_arr.length]);