Gewusst wie: überschreiben CursorAdapter bindView
Ich versuche, die Anzeige von Informationen aus einer Cursor
im ListView
, jede Zeile enthält eine ImageView
und ein TextView
. Ich habe eine CustomCursorAdapter
erweitern CursorAdapter
im bindView
ich die Auswertung der Daten aus dem cursor darauf und legen Sie die Ansichten in Bild und text.
Wenn ich die app starte, die ListView
zeigt die korrekte Anzahl von Zeilen, aber Sie sind leer. Ich weiß, dass ich etwas verpasst haben, die beim überschreiben bindView, aber ich bin mir nicht sicher, was.
Jegliche Hilfe würde sehr geschätzt werden.
private class CustomCursorAdapter extends CursorAdapter {
public CustomCursorAdapter() {
super(Lmw.this, monitorsCursor);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater layoutInflater = getLayoutInflater();
return layoutInflater.inflate(R.layout.row, null);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
try {
int monitorNameIndex = cursor.getColumnIndexOrThrow(DbAdapter.MONITORS_COLUMN_MONITOR_NAME);
int resultTotalResponseTimeIndex = cursor.getColumnIndexOrThrow(DbAdapter.RESULTS_COLUMN_TOTAL_RESPONSE_TIME);
String monitorName = cursor.getString(monitorNameIndex);
int warningThreshold = cursor.getInt(resultTotalResponseTimeIndex);
String lbl = monitorName + "\n" + Integer.toString(warningThreshold) + " ms";
TextView label = (TextView) view.findViewById(R.id.label);
label.setText(lbl);
ImageView icon = (ImageView)view.findViewById(R.id.icon);
if(warningThreshold < 1000) {
icon.setImageResource(R.drawable.ok);
} else {
icon.setImageResource(R.drawable.alarm);
}
} catch (IllegalArgumentException e) {
// TODO: handle exception
}
}
}
- Ich werde versuchen, diese später aber 1 Kommentar: sollten Sie diese
cursor.getColumnIndexOrThrow(DbAdapter.MONITORS_COLUMN_MONITOR_NAME);
Anrufe in Ihrem Konstruktor. wie über SieLog.e
Ausnahme?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
bindView()
Methode scheint ok.Versuchen, anstelle der newView() Methode:
Und, aus performance-Gründen:
getLayoutInflater()
imKonstruktor
cursor.getColumnIndexOrThrow()
Anrufe,als ened gesagt
Kommentare
verwenden Sie einfach warningThreshold
Später Bearbeiten:
Der einzige Unterschied zwischen Ihr
inflate()
Methode und die, die ich vorgeschlagen ist, dass das schafft man layout-Parameter, die mit dem Elternteil.