Question Comment définir une couleur de fond différente pour chaque ligne de listview?


Je veux définir une couleur de fond différente dans chaque ligne de listview? J'ai utilisé un adaptateur personnalisé pour listview. Il devrait apparaître lorsque l'activité loads.static ligne de couleur différente.


10
2018-05-07 08:42


origine


Réponses:


Comme vous l'avez dit, vous devez utiliser l'adaptateur personnalisé pour listview, mais ce que vous devez faire est ci-dessous. dans getView méthode de votre adaptateur, vous devez définir la couleur d'arrière-plan de la vue parent de votre ligne de liste XML.


4
2018-05-07 08:47



dans getView(...) method 

if (position == 0) {
    view.setBackgroundResource(R.drawable.bg_list_even);
} else if (position == 1) {
    view.setBackgroundResource(R.drawable.bg_list_odd);
} else...

Mettre à jour::

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View view = convertView;
    ViewHolder holder;

    if (view == null) {
        LayoutInflater inflater = (LayoutInflater) activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        view = inflater.inflate(R.layout.row, null);

        holder = new ViewHolder();
        view.setTag(holder);

    } else {
        holder = (ViewHolder) view.getTag();
    }

    holder.title = (TextView) view.findViewById(R.id.txttitle);
    holder.description = (TextView) view.findViewById(R.id.txtdesc);

    holder.title.setText("Title" + position);
    holder.description.setText("Desc" + position);

    //here set your color as per position

    if (position == 0) {
        view.setBackgroundResource(R.drawable.bg_list_even);
    } else if (position == 1) {
        view.setBackgroundResource(R.drawable.bg_list_odd);
    }
    return view;
}

classe de titulaire 

public class ViewHolder {

    public TextView title;
    public TextView description;
}

13
2018-05-07 08:45



Faire un tableau comme indiqué ci-dessous comme aucun élément de liste je suppose que vous avez cinq éléments

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

et après faire dans ur getView méthode de custome adaptateur 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);

    }

5
2018-05-07 09:13



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

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

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

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

    textview.setText(data_text[position]);
    imageview.setImageResource(data_image[position]);
    if (position == 0) {
        rowView.setBackgroundColor(Color.BLUE);
    }
    else if (position % 2 == 1) {
        rowView.setBackgroundColor(Color.RED);
    }
    else if (position % 2 == 0) {
        rowView.setBackgroundColor(Color.BLUE);
    }
    return (rowView);

}

1
2017-07-16 10:07