2013-04-18 4 views
0

я следующие данные, полученные с сервера:разреженный массив в качестве одного выбора ListView

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

Я хочу, чтобы положить эти данные в единый выбор ListView (в диалоге, используя setSingleChoiceItems()) и после того, как пользователь делает свой выбор, отправить Идентификатор элемента возвращается к серверу.

Как это сделать? Единственное решение, которое я выяснил, это использовать некоторый вспомогательный массив, который сохраняет сопоставление между элементами списка (которые AFAIK должен идти в последовательности) и идентификаторами предметов (которые в значительной степени случайны). Я также пытался использовать некоторые адаптеры, но не понял, как это сделать.

ответ

0

Сделайте свой собственный список ListView и переопределите getView, чтобы показывать все, что вы хотите в каждой строке. Вам понадобится класс ViewHolder для извлечения пользовательских списков строк, которые вы создали. Посмотрите на это:

Single choice ListView custom Row Layout

0

Вот пример использования одного выбора ListView вам:

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] 
     } 
    }); 
+0

если послать деталь id event onItemSelected(), необходимо использовать onItemSelectedListener() –

Смежные вопросы