2011-02-05 1 views
2

Что я: Обычай ListView с пользовательским адаптером, с помощью пользовательского ListViewItem (который расширяет LinearLayout)Android ListView OnItemClick Change View Properties

Что я хочу сделать: При выборе элемента ListBox , Я хочу изменить фоновый рисунок выбранного изображения.

Что происходит: В настоящее время ничего. Тост действительно выглядит так, как должен, но исходный рисунок не меняется. Я попытался вызвать View.Invalidate(), но это тоже ничего не делает.

Вот фрагмент кода, который должен изменить вытяжке:

public void onItemClick(AdapterView<?> arg0, View view, int index, long arg3) 
{ 
    Card card = CardVM.GetCurrentCards().get(index); 
    card.setBlocked(!card.isBlocked()); 
    if (card.isBlocked()) 
    { 
     view.setBackgroundResource(R.drawable.bluegradient); 
     Toast.makeText(this, "Card is now Blocked", 1).show(); 
    } 
    else 
    { 
     view.setBackgroundResource(R.drawable.greengradient); 
     Toast.makeText(this, "Card is now Available", 1).show(); 
    } 
} 

Функциональность переключения делает работу, если нажать на него в первый раз, он будет говорить «карта заблокирована». Второй раз показывает, что «Теперь доступна карта» ... и так далее. Функция setBackgroundResource просто не работает.

Кроме того, при заполнении списка просмотра цвета фона устанавливаются правильно (с использованием одних и тех же ресурсов и той же функции).

Заранее спасибо.

UPDATE

Он появляется на заднем фоне изменения, но только если экран принудительно перерисовать его. Например, когда вы нажимаете на первый элемент в списке, чтобы он был синим, вам нужно прокрутить вниз (чтобы получить его с экрана), затем прокрутите резервную копию. Затем он становится синим. Можем ли мы это избежать?

ответ

1

использование AdapterView.OnItemSelectedListener() и, возможно, что-то вроде view.setBackgroundDrawable(getResources().getDrawable(R.drawable.listview_item_selected));

Edit:

недействительности структуры не индивидуальный вид.

+0

Спасибо за информацию: см. Мое обновление. – Peanut

+0

то, что я написал, также работает для 'onItemClick'. Я считаю, что ваша проблема, вероятно, 'setBackgroundResource' ... использовать' setBackgroundDrawable' ... Я знаю, что это работает, я использую ее сам. – techiServices

+0

Я тоже попробовал. Это дало тот же результат. : P – Peanut

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

  • Нет связанных вопросов^_^