2011-07-11 15 views
0

stackoverflowや他のフォーラムで2,3日間ポストされた同様の質問をたくさん検索した後、私は答えを見つけることができなかったので、 (私は明らかに逃したかもしれない)を探しています。listviewのアイテムの一意のidを取得する方法onListItemClickのsimpleadapterを使用して作成した

私はハッシュマップのarraylistを持っているとしましょう.1つは、データベーステーブルと国名の2つの名前から取得された一意のIDです。

私はレイアウトxmlで自分のリストビューを定義しました。また、国名がテキストビューとして別のレイアウトになっています。私はlistviewレイアウトを含むレイアウトとしてcontentviewを設定しているlistactivityを拡張するアクティビティクラスを持っています。

このハッシュマップとcountrynameフィールド名を使用してシンプルアダプターを作成しました(リスト表示に国名のみを表示します)。ビューは問題なく表示されます。

次に、ビューのアイテムがクリックされると、onListItemClickメソッドが期待通りに呼び出され、その位置に基づいて国名を取得できます。しかし、私が実際に得たいのは、元々arraylist(hashmap)に格納されていたがリストビューに表示される項目のリストには含まれていなかった国のIDです。そのIDを取得する方法はありますか?私がカーソル・アダプタを使用すると、同じonlistitemclickがIDパラメータのデータのuniqueIDを与えることができますが、simpleadapterを使用すると、コールバックで渡されたIDがその位置と同じように見えます。

これは非常に高く評価されていますが、私は明らかに逃した可能性があります静かです。

答えて

0

あなたはidに設定できるインスタンス変数を持つようにsimpleadapterを拡張してみませんか?

+0

ありがとうございました。私はリストビュー/アダプタが表示されていない値を格納しているが、アダプタの作成で使用されているデータ構造の一部であり、それを取得する方法を提供している場合、デフォルトのアダプタを使用してこれを達成する方法があるかどうか疑問に思っていたonlistiemclickメソッドでも同じですが、ドキュメンテーションでこれを示唆するものは見つかりませんでしたが、専門家と確認したいだけです。 –

+0

よく[simpleadapter](http://developer.android.com/reference/android/widget/SimpleAdapter.html)の公式ドキュメントを見ると、どのフィールドにアクセスできるかがわかります。あなたの場合のように、あなた自身のインスタンス変数を追加することができるように、クラスを拡張する全ポイントがあります。 –

+0

ありがとうKevin、2つのパターンに従っています。カスタムアダプターが必要な場合は、必要なIDを返すgetItemIDメソッドをオーバーライドします。カスタムアダプターを使用していない場合、配列リストをメンバー変数として作成しました。 onlistitemclckでは、私はposition変数を使用し、元の配列リストからIDを取得します。 –

関連する問題