Что я: Обычай 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
Он появляется на заднем фоне изменения, но только если экран принудительно перерисовать его. Например, когда вы нажимаете на первый элемент в списке, чтобы он был синим, вам нужно прокрутить вниз (чтобы получить его с экрана), затем прокрутите резервную копию. Затем он становится синим. Можем ли мы это избежать?
Спасибо за информацию: см. Мое обновление. – Peanut
то, что я написал, также работает для 'onItemClick'. Я считаю, что ваша проблема, вероятно, 'setBackgroundResource' ... использовать' setBackgroundDrawable' ... Я знаю, что это работает, я использую ее сам. – techiServices
Я тоже попробовал. Это дало тот же результат. : P – Peanut