android - ListView 在一个 block 中只显示一个值

标签 android database listview

我有一个 ListView ,它的数据值由 block 分隔(Item1、Item2...),但我想知道如何显示(Item 1、Sub Item 1...)? 这是只显示项目的代码,那么如何显示项目和子项目?

代码:

           //LISTVIEW database CONTATO
    ListView user = (ListView) findViewById(R.id.lvShowContatos);
    //String = simple value ||| String[] = multiple values/columns
    String[] campos = new String[] {"nome", "telefone"};

    list = new ArrayList<String>();
    Cursor c = db.query( "contatos", campos, null, null, null, null, "nome" + " ASC ");
    c.moveToFirst();
    String lista = "";
    if(c.getCount() > 0) {
        while(true) {
           list.add(c.getString(c.getColumnIndex("nome")).toString());
            if(!c.moveToNext()) break;
        }
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, list);

    user.setAdapter(adapter);

我放在那里的代码仍然给我错误,我还没有看到它从哪里获取值。

             //LISTVIEW database CONTATO
    ListView user = (ListView) findViewById(R.id.lvShowContatos);
    //String = simple value ||| String[] = multiple values/columns
    String[] campos = new String[] {"nome", "telefone"};


    ArrayList<HashMap<String, Object>> items = new ArrayList<HashMap<String,Object>>();
    HashMap<String, Object> listItem;

    Cursor c = db.query( "contatos", campos, null, null, null, null, "nome" + " ASC ");
    c.moveToFirst();

    listItem = new HashMap<String, Object>();
    listItem.put("nome", "your_item_text");
    listItem.put("telefone", "your_subitem_text");
    items.add(listItem);

    adapter = new SimpleAdapter(this, items, R.layout.custom_list_layout, new String[]{"item", "subitem"}, new int[]{R.id.text_item, R.id.text_subitem});

    user.setAdapter(adapter);

最佳答案

使用 SimpleAdapter,而不是 ArrayAdapter 来填充 ListView:http://developer.android.com/reference/android/widget/SimpleAdapter.html 在那里,您将有一个数组字段来填充每个项目,例如:

ArrayList<HashMap<String, Object>> items = new ArrayList<HashMap<String,Object>>();
HashMap<String, Object> listItem;

listItem = new HashMap<String, Object>();
listItem.put("item", "your_item_text");
listItem.put("subitem", "your_subitem_text");
items.add(listItem);

adapter = new SimpleAdapter(this, items, R.layout.custom_list_layout, new String[]{"item", "subitem"}, new int[]{R.id.text_item, R.id.text_subitem});

listview.setAdapter(adapter);

还请记住为您的 ListView 项目创建 custom_list_layout.xml,并确保它包含具有正确 ID 的 textView:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/text_item"
        ... />

    <TextView
        android:id="@+id/text_subitem"
        ... />

</RelativeLayout>

关于android - ListView 在一个 block 中只显示一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12429667/

相关文章:

javascript - WebView JavaScript 接口(interface)似乎只能通过 Android Studio 的 Instant-Run 运行,但在通过常规 gradle 编译时却不行

java - 如何为选定的联系人创建 .vcf 文件

java - 在没有受支持的 JDBC 驱动程序的情况下,如何从 Java 应用程序连接到 SUPRA 数据库

android更改adapterview中所选项目的 View

c# - 通过使用 C# 和 HttpClient 调用 REST API 来检索 JSON 内容

java - Android:Eclipse 无法打开

php - 在 MySQL 中编辑记录时检查重复项

mongodb - 如何在中断后重新启动/恢复mongodb中的copydb()?

java - 带有自定义 ListView 的 Android 对话框

android - ListView View 回收与 CustomAdapter