Android Alternate row Colors в ListView
public class ListView extends ListActivity {
static String item;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, Str.S);
setListAdapter(adapter);
}
Это мой класс представления списка, который работает хорошо, и он берет строки из класса Str и отображает их в списке, проблема в стиле listview не хороша, она черная с белыми строками.
Я хочу, чтобы они были альтернативными, каждая строка имеет цвет.
Я пробовал много учебников, но ни один из них не был достаточно ясным.
Как сделать альтернативный цвет для каждой строки. row1 Blue, row 2 White, row 3 Blue, row 4 White и т.д.
Ответы
Ответ 1
Здесь, как это сделать.
Мой примерный код приведен ниже:
Переопределите метод getView
в вашем адаптере:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if (position % 2 == 1) {
view.setBackgroundColor(Color.BLUE);
} else {
view.setBackgroundColor(Color.CYAN);
}
return view;
}
Переопределить ArrayAdapter
и переопределить метод getView.
Итак, если ваш адаптер выглядит примерно так:
public class MyAdapter extends ArrayAdapter
Ваш ListActivity
изменится следующим образом:
ArrayAdapter<String> adapter = new MyAdapter<String>(this,
android.R.layout.simple_list_item_1, Str.S);
Вот пример об переопределении ArrayAdapter.
Ответ 2
if (position % 2 == 0) {
rowView.setBackgroundColor(Color.parseColor("#A4A4A4"));
} else {
rowView.setBackgroundColor(Color.parseColor("#FFBF00"));
}
Ответ 3
Цвет фона для настраиваемой строки списка может быть установлен с помощью
row.setBackgroundResource(R.color.list_bg_2)
в пользовательском адаптере listview в
getView(int position, View convertView, ViewGroup parent)
Я пробовал много вещей, таких как row.setBackgroundColor(0xFF00DD)
, но не смог сделать это,
здесь list_bg_2 - это набор цветов res/values /color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="list_bg_1">#ffffff</color>
<color name="list_bg_2">#fef2e8</color>
</resources>