#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();
Надеюсь, это даст вам некоторое представление. Счастливого кодирования.