У меня есть ListView
в моем ListActivity
, который надувается адаптером. Существует Handler
, и я вызываю его метод postDelayed()
для запуска refresh()
рекурсивно ListView
(с помощью notifyDataSetChanged()
). postDealyed()
установлено на 1 секунду.справка «listitem» в списке просмотров
Теперь, есть ContextMenus
для всех элементов/строк этого ListView
.
Я хочу установить/фон элемента подряд в отдельно от ContextMenu
с помощью этого кода (с получением позиции «longpressed» строк/п):
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
...
case R.id.highlight:
ListView lv = (ListView)getListView();
View row = (View) lv.getChildAt(info.position);
row.setBackgroundColor(Color.argb(255, 22, 100, 100));
return true;
...
Когда я запустить приложение выбранной Роу фон изменяется (как и должно быть), однако каждую секунду (поэтому при каждом обновлении ListView
) другая строка изменяется, а выбранная строка возвращается в исходное состояние. Через секунду все меняется. Если я скольжу по строкам ListView
, другие строки также становятся мигающими. Так же, как если бы ссылки менялись или я действительно не знаю. Если я перестану скользить, мигающие фоны имеют узор до следующего слайда, когда он получит другой рисунок.
Любые идеи? Спасибо заранее!
Хм, я думал, что это решит проблему, но я отредактировал код, как вы предлагали, и проблема все еще остается. Теперь адаптер проверяет, нуждается ли в строке другой фон или нет. Если ему нужен адаптер, он перезаписывает фон с помощью setBackgroundColor. Если я сдвигаю ListView, то останется такая же кричащая вещь. – IBoS
Однако, если я переписываю фон не только для строки, которая должна быть подсвечена, но и для всех строк в адаптере (с черным цветом для других, например), она будет работать, но тогда я потеряю исходное визуальное поведение строк в режиме onlongpress. Я знаю, что могу изменить их так же, как и было, но было бы лучше, если бы мне не нужно было устанавливать фон из других строк. – IBoS
в любом случае, я переместил код в адаптер и установил не только один из конвертеров, но все они с другим фоном/селекторами ect. в зависимости от того, нужно ли его выделить или нет. – IBoS