如何在不显示附加信息的情况下将附加信息放入用于 ListView 的 Arraylist

Posted

技术标签:

【中文标题】如何在不显示附加信息的情况下将附加信息放入用于 ListView 的 Arraylist【英文标题】:How to put additional Information to Arraylist which is used for ListView wirhout showing the additional Information 【发布时间】:2019-06-26 11:33:57 【问题描述】:

我做了一个活动,它读取我所有的联系人并将姓名放入一个 Arraylist。这个 ArrayList 用于填充我的 ListView。如果我单击此 ListView 中的一个项目,该应用程序将在我的联系人中搜索名称并启动一个 Activity,将名称和号码放入 Intent.putExtra。 Chat 存储在以电话号码为 key 的 tinyDB (https://github.com/kcochibili/TinyDB--android-Shared-Preferences-Turbo/blob/master/TinyDB.java) 中。

一切正常,但有一个场景打破了这一概念。如果我有一个联系人有多个电话号码,我将在 ListView 中单击他,我的代码将在我的联系人中搜索姓名并使用此号码开始聊天。因此,聊天将从我的代码每次首先找到的联系人的电话号码开始。所以用第二个电话号码开始聊天是不可能的。

所以我想我也应该将电话号码放入数组列表中,但它们会显示在 ListView 中。

一些建议?

【问题讨论】:

【参考方案1】:

你有几个错误的假设,请注意以下几点:

    一个联系人可能有零个一个多个电话,您需要处理所有这三种情况。 联系人姓名不是唯一的,您的联系人列表中可能有 2 个或多个“John”。 电话号码可能存储在多个联系人中(想想已婚夫妇共享的家庭电话号码)

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

在您的主要列表中,您想到了两个选项: 每个电话而不是每个联系人显示一个列表项, 或者当一个联系人被点击并且它有不止一部手机时,显示AlertDialog 要求用户选择使用哪部手机。

【讨论】:

【参考方案2】:

如果您正在制作聊天应用程序,此答案可能会有所帮助。

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

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

Async Task

标准化您可以使用 googlelibphoneLib 执行此操作的号码。

Google Lib Phone Number

并将它们保存在 SQLite 中。

【讨论】:

以上是关于如何在不显示附加信息的情况下将附加信息放入用于 ListView 的 Arraylist的主要内容,如果未能解决你的问题,请参考以下文章

如何在不跟踪索引的情况下将元素附加到列表?

如何在不覆盖数据源参数的情况下将附加参数传递给剑道模板

如何在不删除旧文档的情况下将 XMLDocument 附加到 LocalStorage

如何在不导致复制的情况下将 char 数据附加到 std::vector

如何在不跟踪索引的情况下将元素附加到列表中?

是否可以在不先列出列表的情况下将 Series 附加到 DataFrame 行?