Я понимаю, что этот вопрос немного стар, но вот очень простое решение, которое отсутствовало. Вам не нужно создавать собственный ListView или даже собственный макет.
Просто создайте анонимный подкласс ArrayAdapter и переопределите getView(). Пусть super.getView() обрабатывает весь тяжелый подъем. Поскольку simple_list_item_1 - это просто текстовое представление, вы можете его настроить (например, установить textColor), а затем вернуть его.
Вот пример из одного из моих приложений. Я показываю список последних мест, и я хочу, чтобы все вхождения «Текущее местоположение» были синими, а остальные - белыми.
ListView listView = (ListView) this.findViewById(R.id.listView);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MobileMuni.getBookmarkStore().getRecentLocations()) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
String currentLocation = RouteFinderBookmarksActivity.this.getResources().getString(R.string.Current_Location);
int textColor = textView.getText().toString().equals(currentLocation) ? R.color.holo_blue : R.color.text_color_btn_holo_dark;
textView.setTextColor(RouteFinderBookmarksActivity.this.getResources().getColor(textColor));
return textView;
}
});
Вам просто нужно установить TextColor свойство TextView для изменения цвета шрифта. – Swapna
Я попытался создать новый simple_list_item_single_choice_1.xml, он будет работать для первого tiem, но затем он сегментирует, когда я перехожу к активности. – User7723337
На мой взгляд, лучший способ - использовать метод, объясненный Дхармином. Это действительно удовлетворяет заданный вопрос. –