Ich habe eine Liste mit einem benutzerdefinierten Adapter und möchte die Hintergrundfarbe basierend auf dem Inhalt des Listenelements oder einer Variablen festlegen. Die Liste besteht aus einer Textansicht mit einem Datum und einigen Informationen.Listeneintrag ändern Hintergrund basierend auf Inhalt/Variable
ich die Hintergrundfarbe ändern müssen, wenn ein neues Datum angezeigt wird ..
item1: 2. März 2016 -> blau
item2: 2. März 2016 -> blau
item3 3. März 2016 -> grau
item4: 4. März 2016 -> blau
...
Kann ich eine Variable (isNewDate) festlegen, die im listAdapter verwendet werden kann?
Meine Liste Adapter:
public class HistoryListViewAdapter extends ArrayAdapter<HistoryListItem> {
public HistoryListViewAdapter(Context context, List<HistoryListItem> items) {
super(context, R.layout.history_list_item, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null) {
// inflate the ListView item layout
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.history_list_item, parent, false);
//different color if new date
if (newdate == 0) //How to find if it is a "new date"
//togle color
convertView.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.colorPrimaryDark));
// initialize the view holder
viewHolder = new ViewHolder();
viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);
viewHolder.tvTextfield = (TextView) convertView.findViewById(R.id.tvTextfield);
viewHolder.tvNote = (ImageView) convertView.findViewById(R.id.tvNote);
convertView.setTag(viewHolder);
} else {
// recycle the already inflated view
viewHolder = (ViewHolder) convertView.getTag();
}
// update the item view
HistoryListItem item = getItem(position);
viewHolder.ivIcon.setImageDrawable(item.icon);
viewHolder.tvTextfield.setText(item.textfield);
viewHolder.tvNote.setImageDrawable(item.note);
return convertView;
}
private static class ViewHolder {
ImageView ivIcon;
TextView tvTextfield;
ImageView tvNote;
}
}
Was meinen Sie mit isNewDate und nach welchen Kriterien müssen Sie die Hintergrundfarbe von Listenelementen ändern? –
isNewDate war ein Vorschlag für eine Variable, die wahr und falsch sein könnte, wenn die Hintergrundfarbe mit der des letzten Elements übereinstimmen sollte, oder mit der zweiten Hintergrundfarbe wechseln. Das Kriterium lautet "if (das Listenelement enthält Informationen von einem anderen Tag als das letzte Element) {toggle background color}" Jedes Listenelement enthält Informationen für einen bestimmten Tag. Es könnte null, ein oder viele Gegenstände für jeden Tag geben. Die Listendaten werden in einer db gespeichert. – EirikO