Как поместить дополнительную информацию в Arraylist, которая используется для ListView без отображения дополнительной информации - PullRequest
0 голосов
/ 02 февраля 2019

Я сделал упражнение, которое читает все мои контакты и помещает имена в Arraylist.Этот ArrayList используется для заполнения моего ListView.Если я нажму на элемент в этом ListView, приложение будет искать в моих контактах имя и начинать действие, вводя имя и номер через intent.putExtra.Чат хранится с tinyDB (https://github.com/kcochibili/TinyDB--Android-Shared-Preferences-Turbo/blob/master/TinyDB.java), который принимает номер телефона в качестве ключа.

Все работает нормально, но один сценарий нарушает эту концепцию. Если у меня один контакт с несколькими телефонными номерами, и янажмите на него в ListView, мой код будет искать имя в моих контактах и ​​использовать этот номер, чтобы начать чат. Таким образом, чат будет начинаться с номера телефона контакта, который мой код будет находить первым каждый раз.невозможно начать работу в чате со второго телефонного номера.

Так что я подумал, что я должен поместить телефонный номер также в arraylist, но тогда они будут отображены в ListView.

Некоторыесоветы?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

У вас есть несколько неверных предположений, обратите внимание на следующее:

  1. Контакт может иметь ноль , один или несколько телефонов, и вам нужно обработать все 3 случая.
  2. Имя контакта не является уникальным , и в вашем списке контактов может быть 2 или более "Джона".
  3. Телефонный номер может храниться в более чем в одном контакте (представьте номер домашнего телефона, который используется совместно для семейной пары)

При передаче ключей поиска междуДля различных видов деятельности вы должны использовать уникальный идентификатор , который точно идентифицирует выбранный элемент, например, Contact-ID или позицию в списке.

В вашем основном списке есть два варианта:обратите внимание: либо показывать элемент списка для телефона, а не для контакта , либо, когда контакт нажимается, и у него более одного телефона, отображается AlertDialog, в котором пользователю предлагается выбрать, какой телефон использовать.

0 голосов
/ 02 февраля 2019

если вы создаете приложение для чата, этот ответ может помочь.

как такие приложения, как WhatsApp, отображают контакты, которые используют только приложение

Для простоты Выможет сделать это, чтобы получить контакты в фоновом режиме, используя Async Подробнее об асинхронности здесь.

Async Task

Нормализовать число, которое вы можете использовать googlelibphoneLib для этого.

Номер телефона Google Lib

и сохраните их в SQLite.

...