Хорошо, что происходит, когда вы звоните setDropDownViewResource
, вы заменяете макет, который вы ранее указали в конструкторе. В вашем случае R.layout.profile_color
. SimpleCursorAdapter
расширяет ResourceCursorAdapter
и в конструкторе устанавливает два макета, равные друг другу.
public ResourceCursorAdapter(Context context, int layout,
Cursor c, boolean autoRequery) {
super(context, c, autoRequery);
mLayout = mDropDownLayout = layout;
mInflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
Проблема возникает, когда вы звоните setDropDownViewResource
и меняете раскладку. SimpleCursorAdapter
будет продолжать использовать те же привязки идентификатора ресурса, которые вы указали в конструкторе.
Что вам нужно сделать, это только указать макет в конструкторе SimpleCursorAdapter
. Я предлагаю изменить ваш код следующим образом:
String[] from = new String[] { ProfileDbAdapter.COL_PROFILE_TITLE };
int[] to = new int[] { android.R.id.text1 }; // from simple_spinner_dropdown_item
SimpleCursorAdapter profilesAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_dropdown_item, profilesCursor, from, to);
spinnerColor.setAdapter(profilesAdapter);
Чтобы получить желаемые результаты.
В основном не используйте метод setDropDownViewResource
. Или, если вы это сделаете и измените привязки идентификатора ресурса, вам придется позвонить SimpleCursorAdapter#changeCursorAndColumns
; однако, это, вероятно, излишне для простого результата, которого вы пытаетесь достичь.