我从服务器检索了以下数据:
[
{id: 8, name: "Item1"},
{id: 14, name: "Item2"},
{id: 30, name: "Item3", active: true},
{id: 42, name: "Item4"}
]
我想将这些数据放入单选ListView(在Dialog中,使用setSingleChoiceItems()
),在用户做出选择后,将项目ID发送回服务器。
怎么做?我想出的唯一解决方案是使用一些辅助数组,它保持列表项(AFAIK必须按顺序排列)和项目ID(几乎是随机的)之间的映射。我也试过使用一些适配器,但没有弄清楚如何。
答案 0 :(得分:0)
创建自己的自定义ListView并覆盖getView以显示每行中您想要的任何内容。您将需要一个ViewHolder类来提取您所做的自定义行列表视图。看看这个:
答案 1 :(得分:0)
此处示例使用单选列表视图:
main.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]
}
});