Как сделать пользовательский ListView с яркими элементами фона?

Я создал коллекцию ArrayList<HashMap<String, String>> для хранения моих данных для ListView . Я использую SimpleAdapter .

Можно ли изменить фон элемента списка, когда ID элемента списка% 10 == 0?

Вот код (способ создания макета):

 private void fillData() { Cursor c = this.mDbManager.getNgOrderDetailByOrderNumber(this.mNumber); ArrayList<HashMap<String, String>> items = new ArrayList<HashMap<String, String>>(); if (!c.isAfterLast()) { do { // ... filling HashMap and putting it to ArrayList } while (c.moveToNext()); } SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.list_item, new String[] { "product", "ordered", "price", "discount" }, new int[] { R.id.ProductTextView, R.id.OrderedTextView, R.id.PriceTextView, R.id.DiscountTextView }); ListView l = (ListView) findViewById(android.R.id.list); l.setAdapter(adapter); } 

Вы переопределите getView в своем адаптере, чтобы внести изменения в представление. Имейте в виду, что ListView повторно использует реализации представления, поэтому, если вы измените цвет на пункт 10, убедитесь, что для всех остальных видов вы устанавливаете противоположный цвет.

например

 new SimpleAdapter( ... ) { @Override public View getView (int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); if (position == 10) { // set background color = red; } else { // set background color = green; } return view; } } 

Вот код, надеюсь, что это будет полезно для других пользователей

 private void fillData() { Cursor c = this.mDbManager.getNgOrderDetailByOrderNumber(this.mNumber); ArrayList < HashMap < String, String >> items = new ArrayList < HashMap < String, String >> (); if (!c.isAfterLast()) { do { // ... filling HashMap and putting it to ArrayList } while (c.moveToNext()); } SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.list_item, new String[] { "product", "ordered", "price", "discount" }, new int[] { R.id.ProductTextView, R.id.OrderedTextView, R.id.PriceTextView, R.id.DiscountTextView }) { // here is the method you need to override, to achieve colorful list @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); HashMap < String, String > items = (HashMap < String, String > ) getListView() .getItemAtPosition(position); if (Long.parseLong(items.get("id")) % 10 == 0) { view.setBackgroundColor(Color.GREEN); } else { view.setBackgroundColor(Color.YELLOW); } return view; } }; ListView l = (ListView) findViewById(android.R.id.list); l.setAdapter(adapter); } 

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

Отметьте это сообщение для примера: Custom ArrayAdapter setBackground в getView