M
metzgore
Neues Mitglied
- 0
Hallo an alle,
ich bin gerade dabei die Notiz-App von den Google Übungen zu erweitern.
Dazu habe ich mir überlegt, dass man die Notizen über einen Kontextmenüeintrag hervorheben / markieren könnte. Habe dazu in der SQLite Datenbank eine Spalte in der Tabelle für Notizen angelegt, die entweder 1 für markieren oder 0 für nicht markieren enthält. Das Ändern dieses Wertes über das Kontextmenü funktioniert ohne Probleme. Nur das Anzeigen der Hervorhebung funktioniert nicht richtig.
Ich habe mir einen eigenen CursorAdapter geschrieben, da dadurch ja die einzelnen Notizen in einer ListView darstellbar sind.
Die Klasse sieht wie folgt aus:
Sollte eigentlich funktionieren. Nun zu meinem Problem (in den beiden angehängten Bildern veranschaulicht):
Über meinen NotesAdapter wird ja die ListView entsprechend mit Daten gefüllt. Im ersten Bild sind die Notizen ohne Hervorhebung zu sehen. Hebe ich jetzt allerdings Notiz 2 oder Notiz 3 über das Kontextmenü hervor, dann wird automatisch auch Notiz 1 hervorgehoben, obwohl für Notiz 1 in der entsprechenden Spalte der DB-Tabelle eine 0 (also nicht hervorheben) eingetragen ist.
Leider finde ich den Fehler nicht und hoffe, dass mir hier vielleicht jemand helfen kann.
Edit: Hat denn niemand eine Idee?
ich bin gerade dabei die Notiz-App von den Google Übungen zu erweitern.
Dazu habe ich mir überlegt, dass man die Notizen über einen Kontextmenüeintrag hervorheben / markieren könnte. Habe dazu in der SQLite Datenbank eine Spalte in der Tabelle für Notizen angelegt, die entweder 1 für markieren oder 0 für nicht markieren enthält. Das Ändern dieses Wertes über das Kontextmenü funktioniert ohne Probleme. Nur das Anzeigen der Hervorhebung funktioniert nicht richtig.
Ich habe mir einen eigenen CursorAdapter geschrieben, da dadurch ja die einzelnen Notizen in einer ListView darstellbar sind.
Die Klasse sieht wie folgt aus:
Code:
public class NotesAdapter extends CursorAdapter {
private LayoutInflater inflator;
private int ciTitle, ciDate, ciNoteHighlighted;
public NotesAdapter(Context context, Cursor c) {
super(context, c);
inflator = LayoutInflater.from(context);
ciTitle = c.getColumnIndex(NotesDbAdapter.KEY_TITLE);
ciDate = c.getColumnIndex(NotesDbAdapter.KEY_DATECREATED);
ciNoteHighlighted = c
.getColumnIndex(NotesDbAdapter.KEY_NOTEHIGHLIGHTED);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView title = (TextView) view.findViewById(R.id.titleRow);
String titleText = cursor.getString(ciTitle);
TextView date = (TextView) view.findViewById(R.id.date);
String dateText = cursor.getString(ciDate);
String formattedDate = formatDateTime(context, dateText);
boolean noteHighlighted = (cursor.getInt(ciNoteHighlighted) == 1) ? true
: false;
title.setText(titleText);
date.setText(formattedDate);
if (noteHighlighted) {
title.setTypeface(null, Typeface.BOLD);
title.setTextColor(title.getContext().getResources()
.getColor(R.color.highlightColor));
date.setTypeface(null, Typeface.BOLD);
date.setTextColor(date.getContext().getResources()
.getColor(R.color.highlightColor));
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return inflator.inflate(R.layout.notes_row, null);
}
public String formatDateTime(Context context, String timeToFormat) {
String finalDateTime = "";
SimpleDateFormat iso8601Format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = iso8601Format.parse(timeToFormat);
} catch (ParseException e) {
date = null;
}
if (date != null) {
long when = date.getTime();
int flags = 0;
flags |= DateUtils.FORMAT_SHOW_DATE;
flags |= DateUtils.FORMAT_ABBREV_MONTH;
flags |= DateUtils.FORMAT_SHOW_YEAR;
finalDateTime = DateUtils.formatDateTime(
context, when + TimeZone.getDefault().getOffset(when),
flags);
}
return finalDateTime;
}
}
Sollte eigentlich funktionieren. Nun zu meinem Problem (in den beiden angehängten Bildern veranschaulicht):
Über meinen NotesAdapter wird ja die ListView entsprechend mit Daten gefüllt. Im ersten Bild sind die Notizen ohne Hervorhebung zu sehen. Hebe ich jetzt allerdings Notiz 2 oder Notiz 3 über das Kontextmenü hervor, dann wird automatisch auch Notiz 1 hervorgehoben, obwohl für Notiz 1 in der entsprechenden Spalte der DB-Tabelle eine 0 (also nicht hervorheben) eingetragen ist.
Leider finde ich den Fehler nicht und hoffe, dass mir hier vielleicht jemand helfen kann.
Edit: Hat denn niemand eine Idee?

Anhänge
Zuletzt bearbeitet: