Изо всех сил пытаюсь заставить мое представление списка работать должным образом

#java #android #listview

#java #Android #listview

Вопрос:

Прежде чем я начну. Я приношу извинения за то, что не загрузил какой-либо код. Но я уже знаю, что понимаю проблему, которая у меня есть. Я просто не знаю, как это отсортировать.

Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть представление списка, которое заполнено множеством строк. В каждой строке есть имя контактов, сколько общих контактов у пользователя. Изображение на экране контакта и кнопка действия.

Когда пользователь нажимает на кнопку действия. Они продвигаются с помощью всплывающего окна. Отображение еще четырех дополнительных опций; отменить, заблокировать, сообщение и отменить.

Когда пользователь нажимает на кнопку «Отменить или заблокировать». Строка, связанная с этой кнопкой, затем удаляется из представления списка. Звучит просто, верно?

В представлении списка также есть фильтр поиска, который может использовать пользователь. Можно выполнять поиск по именам контактов. Пока пользователь вставляет значения, представление списка обновляется последовательно, отображая контакты, которые содержат значения, вставленные в функцию поиска. Применяются те же правила, пользователь может удалять, блокировать … и т.д.

Проблема, с которой я сталкиваюсь, заключается в том, что пользователь пытается отключить пользователя от друзей, сначала выполнив поиск по имени его контакта. Он пытается удалить контакт в позиции 0. Теперь, как мы, возможно, знаем, этот искомый контакт может фактически находиться на позиции 7 в списке массива. И, таким образом, вызывает проблему. Он удаляет неправильного пользователя. Теперь, если пользователь не использует функцию поиска. Это действительно работает, правильная позиция удаляется из списка. И оле Джо счастлив.

Я сначала очищаю ArrayList перед чтением контактов, содержащих введенные значения поиска.

Мне жаль, что я не могу загрузить код, но мой Mac в настоящее время недоступен, и поэтому я не могу получить доступ к своему project SC.

Может ли кто-нибудь дать мне какое-то указание на то, где я мог пойти не так?

Спасибо, Питер.

Комментарии:

1. Вы храните информацию на основе поиска в каком-либо другом списке массивов?

2. Просто добавьте некоторое значение идентификатора к своим объектам контактов, чтобы вы могли найти их снова.

3. Используете ли вы an ArrayAdapter ?

Ответ №1:

Сначала установите тег в getView методе, если у вас есть адаптер

 textView.setTag(position) // set the tag (assuming you have textView in row, or you can set the tag for any other control)
  

Затем при удалении

  int position = (Integer)v.getTag();  // get the tag that you had set before.
 your_arraylist.remove(position);  // remove
 // your remaining code
 notifyDataSetChanged();
  

Надеюсь, это даст вам некоторое представление. Счастливого кодирования.