如何在不显示附加信息的情况下将附加信息放入用于 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