SimpleCursorAdapter.ViewBinderをチェックしてください。
setViewValueは基本的にCursor
、ビューの背景色の設定など、のデータを使って好きなことを行うチャンスです。
たとえば、次のようになります。
SimpleCursorAdapter.ViewBinder binder = new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
String name = cursor.getColumnName(columnIndex);
if ("Colour".equals(name)) {
int color = cursor.getInt(columnIndex);
view.setBackgroundColor(color);
return true;
}
return false;
}
}
datasource.setViewBinder(binder);
更新-カスタムアダプタ(拡張CursorAdaptor
)を使用している場合、コードはそれほど変更されません。あなたはオーバーライドするでしょうgetView
そしてbindView
:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView != null) {
return convertView;
}
/* context is the outer activity or a context saved in the constructor */
return LayoutInflater.from(context).inflate(R.id.my_row);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
int color = cursor.getInt(cursor.getColumnIndex("Colour"));
view.setBackgroundColor(color);
String label = cursor.getString(cursor.getColumnIndex("GenreLabel"));
TextView text = (TextView) findViewById(R.id.genre_label);
text.setText(label);
}
あなたはもう少し手動でやっていますが、それは多かれ少なかれ同じ考えです。これらのすべての例で、文字列を介して列インデックスを検索する代わりに、列インデックスをキャッシュすることでパフォーマンスを節約できることに注意してください。