2013-07-15 2 views
0

У меня есть ListView и возможность выбора одного элемента (единственный выбор).Как установить цвет фона для всех элементов ListView на событии OnItemClick?

Как установить цвет фона для всех элементов ListView (возможно, видимых как минимум), когда выбран какой-либо элемент?

 
adapter = new ArrayAdapter(activity, simple_list_item_single_choice, orderlines) { 
    @Override 
    public View getView(final int position, View convertView, final ViewGroup parent) { 
     ... 
     convertView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       convertView.setBackgroundColor(BLACK); 
       // so here currently selected element is set to BLACK, but also other elements have to be set to WHITE 
      } 
     }); 
     return convertView; 
    } 
} 

Благодаря

ответ

0

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

Чтобы изменить цвет других (невыделенных) представлений при выборе определенного вида, я предполагаю, что вы можете вызвать getCount() и адаптировать его в этот список, сделать вызов getChildAt (i) вашего Посмотреть список. Это возвращает вид, который вы можете вызвать setBackgroundColor (Цвет). Надеюсь, это поможет

0

Вы можете сделать

parent.setBackgroundColor(BLACK); 
this.notifyDataSetChanged(); 

, чтобы установить вид списка фона.

+0

Я уже пробовал это, но результат тот же. Я подумал, возможно, есть какой-то способ обновить представление состояния «ListView» после выбора, например 'notifyDataSetChanged()'. – vetalitet

+0

Да, добавление 'this.notifyDataSetChanged()' после этого должно помочь. – Neoh

0

Я бы использовал селектор Drawable.

Проверить ссылку на довольно хороший пример: http://www.charlesharley.com/2012/programming/custom-drawable-states-in-android/

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

Вы можете назначить фоновый рисунок на любой вид, чтобы вы могли сделать это в своем XML для своего адаптера или в Java-коде. Что в вашем случае может быть примерно таким:

convertView.setBackgroundDrawable(R.drawable.MySelector); 
0

parent.setBackgroundColor (while_color); v.setBackgroundColor (black_color)

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