Cursor
의 정보를 ListView
에 표시하려고하는데 각 행에 ImageView
및 TextView
이 포함되어 있습니다. 나는 CustomCursorAdapter
을 CursorAdapter
까지 확장하고 있습니다. bindView
커서의 데이터를 평가하고 뷰 이미지와 텍스트를 설정합니다.CursorAdapter를 재정의하는 방법 bindView
앱을 실행할 때 ListView
은 정확한 양의 행을 표시하지만 비어 있습니다. 나는 bindView를 재정의 할 때 뭔가를 놓쳤다는 것을 알고 있지만 무엇이 확실하지가 않다.
도움을 주시면 감사하겠습니다.
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
}
}
}
나는 이것을 나중에 시도 할 것이지만, 1 개의 코멘트 : 생성자에서이'cursor.getColumnIndexOrThrow (DbAdapter.MONITORS_COLUMN_MONITOR_NAME);'호출을해야한다. 당신은'Log.e' 예외는 어떨까요? –