Используйте android.R.layout.simple_list_item_1 с легкой темой - PullRequest
10 голосов
/ 09 июня 2010

Я узнал, что при использовании android:entries с ListView он использует android.R.layout.simple_list_item_1 в качестве макета для элемента списка и android.R.id.text1 в качестве идентификатора TextView внутри этого макета.Пожалуйста, поправьте меня, если я ошибаюсь.

Зная это, я хотел создать свой собственный адаптер, но использовать те же ресурсы макета, чтобы обеспечить согласованность пользовательского интерфейса с платформой.Поэтому я попробовал следующее:

mAdapter = new SimpleCursorAdapter(
    getApplicationContext(),
    android.R.layout.simple_list_item_1,
    mSites,
    new String[] { SitesDatabase.KEY_SITE },
    new int[] { android.R.id.text1 }
);

К сожалению, поскольку я использую светлую тему (у меня android:theme="@android:style/Theme.Light" в моем <application>), элементы списка отображаются белым текстом, что делает их нечитаемыми.

Однако при использовании android:entries для указания статического списка элементов элементы отображаются правильно, с черным цветом текста.

Что я делаю не так?Как я могу заставить мой динамический адаптер использовать стандартную компоновку, но работать с легкой темой?

1 Ответ

15 голосов
/ 09 июня 2010

Пожалуйста, поправьте меня, если я ошибаюсь.

По крайней мере, вы не правы.Он использует com.android.internal.R.layout.simple_list_item_1.Хотя это почти идентично android.R.layout.simple_list_item_1, оно может быть тематическим по-разному.

Кроме того, никогда не используйте getApplicationContext().Просто используйте ваш Activity как Context.Посмотрите, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...