如何将附加信息放到用于ListView的Arraylist中,以显示附加信息

时间:2019-02-01 21:06:15

标签: java android arraylist android-listview

我进行了一项活动,该活动将读取我的所有联系人并将其姓名放入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 :(得分:0)

如果您要创建聊天应用程序,此答案可能会有所帮助。

This segment

为简单起见,您可以使用Async在后台获取联系人 在此处阅读有关异步的更多信息。

how do apps like whatsapp show contacts that are only using app

规格化您可以使用googlelibphoneLib做到的数字。

Async Task

并将其保存在SQLite中。

答案 1 :(得分:0)

您在这里有两个错误的假设,请注意以下几点:

  1. 联系人可能有一个多个电话,您需要处理所有三种情况。
  2. 联系人姓名不是唯一,并且您的联系人列表中可能有2个或更多“ John”。
  3. 电话号码可能会存储在一个联系人之内(例如已婚夫妇共享的家庭电话号码)

在不同活动之间传递搜索键时,您必须使用唯一的标识符,该标识符可以准确标识所选项目,例如联系人ID或列表中的位置。

在您的主列表中,有两个选择: 要么显示每个电话而不是每个联系人的列表项, 或单击某个联系人并且拥有一部以上的电话时,请显示AlertDialog,要求用户选择要使用的电话。