2

ListView に値を設定する SimpleAdapter がありますが、ユーザーが項目を押すと、クリックされた行に値を設定するために使用された元の HashMap を取得できるようにしたいと考えています。残念ながら、私が返すことができるのは、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
        }
    });
4

1 に答える 1

2

メンバー変数に格納しました。

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);
    }
});
于 2011-08-30T00:38:12.637 に答える