2013-12-12 4 views
0

У меня есть TreeMap с парами значений ключа. Ключ - это String, который обозначает определенный тип. На основании этого может быть еще четыре свойства типа, которые я добавляю в список. Теперь для каждой записи < | key |, list | string> Я хочу заполнить одну строку в виде списка. Какой тип адаптера я должен сделать. Также я должен учитывать, что мне нужно переопределить метод getView(), потому что я хочу отображать разные изображения в зависимости от значения ключа. Любые подсказки или учебные пособия?TreeMap <Key, List <String>> to List view

+0

Вы используете TreeMap или hashMap ?? –

+0

TreeMap, чтобы мои ключи отсортированы. – User3

+0

Посмотрите на [это] (http://stackoverflow.com/a/18546016/2591002) –

ответ

0

Вы можете использовать простую базу adapter..In этот адаптер, в методе просмотра ГЭТ, и можно использовать другой адаптер список, чтобы раздуть, что список

+0

Можете ли вы дать несколько советов о том, как раздуть часть списка? – User3

+0

Вы можете использовать метод getview для настраиваемого списка. –

+0

Да, я знаю, что я описал это в самом Вопросе. Но как назначить элементы списка одной строке? А потом повторите? – User3

0

Вы можете легко уйти с использованием BaseAdapter. Трюк здесь состоит в том, чтобы получить пару ключ-значение с карты по указанному индексу. Это не так сложно - и когда ваша карта будет отсортирована, вы будете получать тот же порядок каждый раз. У вас будет что-то вроде этого:

public class MapAdapter<K, V> extends BaseAdapter { 
    Context context; 
    Map<K, V> data; 

    public MapAdapter(Context _context, Map<K, V> _data) { 
     context = _context; 
     data = _data; 
    } 

    public int getCount() { return data.size(); } 

    public Object getItem(int position) { 
     K key = map.keySet().toArray()[position]; 
     V value = map.get(key); 
     return AbstractMap.SimpleEntry(key, value); 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     AbstractMap.SimpleEntry<K, V> entry = (AbstractMap.SimpleEntry<K, V>)getItem(position); 
     K key = entry.getKey(); 
     V value = entry.getValue(); 

     MyRowView rowView = (MyRowView)convertView; 
     if(rowView == null) { 
      rowView = ... //create your view by inflating or otherwise 
     } 

     //Now you have the view and details of your key and value - populate the row 
     ... 

     return rowView; 
    } 
} 
+0

Я попробую это. – User3