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);
}
あなたはもう少し手動でやっていますが、それは多かれ少なかれ同じ考えです。これらのすべての例で、文字列を介して列インデックスを検索する代わりに、列インデックスをキャッシュすることでパフォーマンスを節約できることに注意してください。