1

リストビューがあり、そのデータ値はブロック(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);
4

3 に答える 3

1

次のように入力するのSimpleAdapterではなく、を使用し てください。ArrayAdapterListView

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>
于 2012-09-14T19:44:49.713 に答える
0

ExpandableListViewを見てください。これは、まさにこのユーザーケースに当てはまります。

于 2012-09-14T19:23:03.353 に答える
0

ArrayAdapterまたはBaseAdapterのいずれかを拡張する独自のカスタムアダプタを作成する必要があります。また、リスト内のアイテムのxmlレイアウトを作成する必要があります。
ListViewを初めて使用する場合は、ListViewでこのチュートリアルを実行してください。

于 2012-09-14T19:42:57.387 に答える