Получение оригинальной HashMap из SimpleAdapter / ListView на элементе Press - PullRequest
2 голосов
/ 30 августа 2011

У меня есть SimpleAdapter, который заполняет ListView, но когда пользователь нажимает элемент, я хотел бы иметь возможность получить исходный HashMap, который использовался для заполнения строки, по которой щелкнули. К сожалению, кажется, что все, что я могу получить, это Object, который поддерживает только toString (). Наличие строки в представлении, по которому щелкнул пользователь, бесполезно, поскольку оно не является уникальным идентификатором.

Как я могу вернуть свои данные для строки, по которой щелкнул пользователь?

ArrayList<HashMap<String, String>> reformedBundle = new ArrayList<HashMap<String, String>>();
// [...]
mResultsAdapter = new SimpleAdapter(this,
    reformedBundle, R.layout.resultrow,
    new String[] { "ProviderName", "Street", "City" },
    new int[] { R.id.tvField1, R.id.tvField2, R.id.tvField3
});

lvResults.setAdapter(mResultsAdapter);

lvResults.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
            // Here's where I want to get the original HashMap<String, String> so I can query other keys in the HashMap
        }
    });

1 Ответ

2 голосов
/ 30 августа 2011

Я сохранил в переменной-члене.

private ArrayList<HashMap<String, String>> reformedBundle;

...

lvResults.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
        HashMap<String, String> map = reformedBundle.get(pos);
    }
});
...