2012-01-12 3 views
2

Я видел связанные ответы, и я не знаю, какой из них подходит для меня. У меня есть listView, и каждая строка имеет текстовое представление. Я хочу, чтобы некоторые условия, каждая строка имела разный цвет. (Представьте, что я получаю данные из БД и получаю значение, которое я получаю, я хочу, чтобы текст был установлен на другой цвет). Мой код показан ниже:набор разных цветов в каждой строке списка просмотров

public class TrailsConditionScreen extends ListActivity { 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     seeTrails(); 
    } 
private void seeTrails() { 
    String[] help=new String[] {"foo","bar"}; 
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.row,R.id.text1,help); 
    setListAdapter(adapter); 
} 

} Этот код пока что распечатывает их в списке.

Теперь я хочу, когда вы извлекаете значения из db, учитывая значение, которое я устанавливаю для каждого цвета. представьте, что мои коды извлекают данные из таблицы, которую я хочу при чтении первой строки, учитывая, что число задает соответствующий цвет в первой строке списка. Затем перейдите во второй одиночный бит db, установите цвет для второй строки списка и т. Д. Я успешно выполнил чтение из db, но я не знаю, как установить цвет в определенной строке. В псевдокоде это выглядит так.

for i=0 to number of lines in db{ 
    read_data(); 
    if key_value=0 then color_of_line(i)=red; 
    else color_of_line_i)=green; 
} 

Зачем нужна помощь?

ответ

7

Вы должны создать пользовательский адаптер для обработки этого, вместо использования ArrayAdapter. Расширьте ArrayAdapter и переопределите метод getView. И внутри метода getView на основе условия вы можете изменить цвет текста на вашем textView.setTextColor.

Чтобы написать пользовательский адаптер, проверьте здесь tutorial (6. Учебное пособие: Внедрение собственного адаптера). Этот пример не использует шаблон держателя, но вы должны.

2

Ваш лучший выбор - расширить ArrayAdapter и создать свой собственный класс.

В способе getView() выполните свое условие и задайте цвет рисунка. Существует множество хороших руководств по созданию собственных адаптеров. Проверьте, например, http://www.ezzylearning.com/tutorial.aspx?tid=1763429&q=customizing-android-listview-items-with-custom-arrayadapter.

Надеюсь, это поможет!

0

Что я хотел бы сделать, это создать CustomAdapter для просмотра списка

public class MyCustomAdapter extends BaseAdapter 

и в несильно

public View getView(int position, View convertView, ViewGroup parent) 

у вас есть позиции, и вы можете изменить все, что вы хотите.

Если вы ищете Google обычая адаптер ListView вы получите некоторые примеры

2

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

В новом пользовательском адаптере вы должны переопределить метод getView(). Здесь указывается представление, которое будет использоваться для каждого элемента в виде списка. Кроме того, вы также можете установить свойства вида.

В зависимости от вашей бизнес-логики вы должны установить цвет текста в getView.

Учебник здесь: http://www.ezzylearning.com/tutorial.aspx?tid=1763429&q=customizing-android-listview-items-with-custom-arrayadapter

-1

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

Смежные вопросы