0

我从服务器检索到以下数据:

[
  {id: 8, name: "Item1"},
  {id: 14, name: "Item2"},
  {id: 30, name: "Item3", active: true},
  {id: 42, name: "Item4"}
]

我想将该数据放入单选 ListView(在 Dialog 中,使用setSingleChoiceItems()),并在用户做出选择后,将项目 ID 发送回服务器。

怎么做?我想出的唯一解决方案是使用一些辅助数组来保持列表项(AFAIK 必须按顺序进行)和项 ID(几乎是随机的)之间的映射。我也尝试使用一些适配器,但不知道如何。

4

2 回答 2

0

制作您自己的自定义 ListView 并覆盖 getView 以在每一行中显示您想要的任何内容。您将需要一个 ViewHolder 类来提取您创建的自定义行列表视图。看看这个:

单选 ListView 自定义行布局

于 2013-04-18T07:18:47.720 回答
0

这里的例子使用单选列表视图给你:

主.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
     <ListView
        android:id="@+id/listview1"
        android:cacheColorHint="#00000000"
        android:scrollbars="none"
        android:fadingEdge="vertical"
        android:soundEffectsEnabled="true"
        android:dividerHeight="1px"
        android:padding="5dip"
        android:smoothScrollbar="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:layout_marginBottom="10dip"
        android:layout_weight="1"/>

</LinearLayout>

活动:

    String[] items = new String[] { "Item1", "Item2", "Item3", "Item4" };
    int[] itemsIds = new int[] { 8, 14, 30, 42 };
    ListView listView = (ListView)findViewById(R.id.listview1);
    listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, android.R.id.text1, items));
    listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            //here send your item id itemsIds[position]
        }
    });
于 2013-04-18T07:19:08.663 回答