2013-06-26 2 views
0

я пытаюсь слушать нажмите на ListView которой каждая строка HashMap:андроид объект HashMap (на ListView)

lvItem = (ListView)getView().findViewById(R.id.listWork); 
ArrayList<HashMap<String, String>> mylistData = new ArrayList<HashMap<String, String>>(); 
HashMap<String, String> map = new HashMap<String, String>(); 
int[] columnID = new int[] {R.id.tvPK, R.id.tvText }; 
map.put("PK", "1"); 
map.put("ITEM", "2"); 
mylistData.add(map); 

SimpleAdapter arrayadapter = new SimpleAdapter(getActivity(), mylistData, R.layout.row_hidden_id, new String[] {"PK", "ITEM"}, columnID); 
lvItem.setAdapter(arrayadapter); 
lvItem.setTextFilterEnabled(true); 

lvItem.setOnItemClickListener(new OnItemClickListener() { 
@Override 
public void onItemClick(AdapterView<?> a, View v, int p, long id) { 
    Object o = lvItem.getItemAtPosition(p); 
    ErrorMsg("ID:" + o.toString()); 
} }); 

я получаю что-то вроде "{ITEX = 2, PK = 1}"
Мне нужно отбросить объект (o) как hashmap и получить только pk ...

любая идея?

Спасибо!

+0

Я не понимаю, что вы пытаетесь сделать. Список mylistData никогда не добавляется ни к чему (а не к коду, который вы вставили в любом случае). Значит, вы в основном заполняете список некоторыми данными, а потом? – aeliusd

+0

Я думаю, вы используете «ArrayAdapter» и заполняете его одним «HashMap». Это, вероятно, не то, что вы хотите. Рассмотрим расширение «BaseAdapter» и использование этого для управления любыми объектами, которые вам нравятся. –

+0

отредактировал - забыл 3 строки .. извините. – gabi

ответ

1

Try:

lvItem.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> a, View v, int p, long id) { 
     HashMap<String,String> map = (HashMap) lvItem.getItemAtPosition(p); 
     ErrorMsg("ID:" + map.get("PK")); 
    } 
}); 
+0

он работает. Спасибо. – gabi