In meiner App habe ich eine Listenansicht. In jeder Zeile des Listenelements gibt es eine Textansicht, die den Anfangsbuchstaben des Namens wie in vielen Kontakt-Apps anzeigt. Ich muss die Hintergrundfarbe dieser Textansicht aus einem vordefinierten Satz von 4 Farben festlegen, die in colors.xml definiert sind. Was ich will ist, dass die Farbe nach jeweils 4 Elementen in der Listenansicht wiederholt werden soll. Dafür habe ich die folgende LogikEinstellen der Farbe im Listenelement von 4 Farben
color_array=activity.getResources().getIntArray(R.array.dar_list_color);
if (count<4) {
viewHolder.layout_color.setBackgroundColor(color_array[count]);
}
else
count=0;
count++;
Das Ding funktioniert gut, aber es gibt ein Problem, häufiges Problem mit Listview das heißt auf Farbänderungen zu scrollen. Da die Zählung nicht von der Position des Adapters abhängt, kann ich nicht herausfinden, wie ich diesen beheben kann. Hier
ist der Screenshot von dem, was ich umgesetzt haben
Dies ist die komplette Adapter Code
public class DAR_Aadapter extends BaseAdapter {
int color_array[],count=0;
Activity activity;
ArrayList<DAR_List_Item> dar_List_Items;
public DAR_Aadapter(Activity activity, ArrayList<DAR_List_Item> dar_List_Items) {
// TODO Auto-generated constructor stub
this.activity=activity;
this.dar_List_Items=dar_List_Items;
color_array=activity.getResources().getIntArray(R.array.dar_list_color);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return dar_List_Items.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return dar_List_Items.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder viewHolder;
if(convertView==null)
{
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(activity).inflate(R.layout.dar_swipe_list_layout, null);
viewHolder.clientname= (TextView)convertView.findViewById(R.id.Client_name);
viewHolder.client_initial= (TextView) convertView.findViewById(R.id.client_initial);
viewHolder.text_contactedpaerson= (TextView)convertView.findViewById(R.id.text_contacted);
viewHolder.text_contacttype= (TextView)convertView.findViewById(R.id.text_contact_type);
viewHolder.text_createddate= (TextView)convertView.findViewById(R.id.text_Created_date);
viewHolder.text_requestdate= (TextView)convertView.findViewById(R.id.text_request_date);
viewHolder.text_productname= (TextView)convertView.findViewById(R.id.text_product);
// viewHolder.text_status= (TextView)convertView.findViewById(R.id.text_status);
viewHolder.contactedpaerson= (TextView)convertView.findViewById(R.id.contacted);
viewHolder.contacttype= (TextView)convertView.findViewById(R.id.contact_type);
viewHolder.createddate= (TextView)convertView.findViewById(R.id.create_date);
viewHolder.requestdate= (TextView)convertView.findViewById(R.id.request_date);
viewHolder.productname= (TextView)convertView.findViewById(R.id.product);
// viewHolder.status= (TextView)convertView.findViewById(R.id.status);
viewHolder.layout_color= (LinearLayout) convertView.findViewById(R.id.client_initial_layout);
convertView.setTag(viewHolder);
}else
{
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.clientname.setText(dar_List_Items.get(position).getClient_name());
String temp=viewHolder.clientname.getText().toString();
viewHolder.client_initial.setText(""+temp.charAt(0));
viewHolder.contactedpaerson.setText(dar_List_Items.get(position).getContacted_person());
viewHolder.contacttype.setText(dar_List_Items.get(position).getContact_type());
viewHolder.createddate.setText(dar_List_Items.get(position).getCreated_date());
viewHolder.productname.setText(dar_List_Items.get(position).getproduct_name());
viewHolder.requestdate.setText(dar_List_Items.get(position).getRequest_date());
// viewHolder.status.setText(dar_List_Items.get(position).getStatus());
if (count<4) {
viewHolder.layout_color.setBackgroundColor(color_array[count]);
}
else
count=0;
count++;
return convertView;
}
public static class ViewHolder
{
LinearLayout layout_color;
TextView clientname,client_initial,text_contactedpaerson,contactedpaerson,text_contacttype,contacttype,text_productname,productname,text_status,status,createddate,text_createddate,text_requestdate,requestdate;
}
}
initialisieren zählen in onCreate() –
post diesen Code bitte seit dem 'count' wird wahrscheinlich nicht funktionieren und wird nicht auf die Position des Adapters beziehen. – Shark
, aber die Position wird entsprechend dem Adapter erhöht und ist 0 beim Start. Wie wird das funktionieren? –