显示带有 Hashmap 数据的列表视图

Posted

技术标签:

【中文标题】显示带有 Hashmap 数据的列表视图【英文标题】:Showing a listview with Hashmap data 【发布时间】:2015-02-22 21:35:13 【问题描述】:

我有麻烦了。

我有一个 HashMap,我需要它成为一个全局变量(可用于多个活动)。这个哈希图有一个联系人列表,其中关键是它的邮件地址......所以我有一对电子邮件地址,完整的联系人数据。这是我的代码:

protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    miAgenda= new HashMap<String, contactoAgenda>();
    contactoAgenda Eduardo = new contactoAgenda("Eduardo", "c/ Segovia","973", "edufissure@msn.com",true, true, false, false, true,"Laboral");
    miAgenda.put(Eduardo.getMail(),Eduardo);

    contactoAgenda Daniel= new contactoAgenda("Daniel", "c/ Diego Madrazo","92458", "dani@msn.com",true, true, false, false, true,"Familia");
    miAgenda.put(Daniel.getMail(),Daniel);

    contactoAgenda Belen= new contactoAgenda("Belen", "c/ Diego Madrazo","92458", "belen@gmail.com",true, true, false, false, true,"Familia");
    miAgenda.put(Belen.getMail(),Belen);


      Toast.makeText(getApplicationContext(), "hola"+miAgenda.size()+"\n" , Toast.LENGTH_LONG).show();

      ListView lista=(ListView) findViewById(R.id.listaContactos);
         ArrayAdapter<contactoAgenda> adaptador = new ArrayAdapter<contactoAgenda>(this,R.id.editText1, (List<contactoAgenda>) miAgenda.get(contactoAgenda);
         lista.setAdapter(adaptador);

问题是我需要显示所有联系人的 ListView 列表......我在制作适配器时遇到了困难......我找不到任何类似的示例,其中包含由对象的字段制作的 Hashmap( contactoAgenda 的邮件,以及所有包含所有文件的所有contactoagenda 对象......

我们将不胜感激。我正在使用 api 15。我在这里是个菜鸟。

提前致谢

【问题讨论】:

仅供参考:拥有全局 HashMap 是个坏主意。相反,请考虑拥有一个内容提供商。事实上,android 立即提供了一个开箱即用的 ContactsProviders,这看起来像是您可能想要的。 我需要一个自定义的contactoAgenda,我必须将它存储在一个数组中...与contactsProvider 无关...谢谢您的回复... 【参考方案1】:

您可以将您的 Map 转换为 ArrayList

ArrayAdapter<contactoAgenda> adaptador = new ArrayAdapter<contactoAgenda>(this,R.id.editText1, miAgenda.values();

注意,ArrayAdapter 不知道如何正确显示 contactoAgenda 类类型。您可以覆盖它的 toString() 方法,该方法将控制它在屏幕上的显示方式。更合适的是使用可以处理 contactoAgenda 类类型的 getView() 实现来实现您的自定义适配器。

【讨论】:

你能说得更清楚些,举个例子吗?我还在contactoAgenda 中完成了toSTring 方法。现在我不知道如何用所有联系人填充列表视图并显示例如姓名和电子邮件或姓名和电话(在列表视图的每个项目中显示两个字段)。 顺便说一句......它给了我错误你给我的指令......似乎hashmap不允许miagenda.values......而且它似乎错过了一个)。虽然它给出了错误....

以上是关于显示带有 Hashmap 数据的列表视图的主要内容,如果未能解决你的问题,请参考以下文章

BaseAdapter 未更新列表视图中的数据

从视图表中获取数据时出现 Laravel 错误

无法将查询另存为视图表

Rails 视图表以显示来自另一个模型的值

SQL 如何查询指定架构中所有表(或视图)的名称

查看Oracle都有哪些表或者视图