0

カスタマイズしたbaseAdapterでリストビューを使用しています。setTagとgetTagの正しい使い方について考えていました。

getView関数を使用しているときは、convertView.setTag(specificId)を実行しています。誰かがアイテムをクリックした場合、私はgetTagを実行し、それがクリックされたアイテムのspeicifcIDになるので、そのIDを使用してさらに多くのことを実行できます。各アイテムのそのタグにカスタムデータを保存するようなもの

これはsetTagの正しい使用方法ですか?そうでない場合は、クリックされたアイテムを識別する方法が必要です。位置はそれほど役に立ちません。そうでない場合は、位置と特定のIDの間のマッピングを含む静的配列が必要になります(これは非効率的です)

間違っていたら訂正してくださいありがとうございます

4

1 に答える 1

0

実際には、ListView 項目のクリックだけに関心がある場合は、setTag() と getTag() を使用する必要はありません。

の位置パラメータを使用してListView.setOnItemClickListener行います。

あなたが言ったので:

Position won't be that helpful

positiongetView()のパラメータのことですか? ListView アイテムの子ビュー (テキスト/ボタンなど) をクリックするためです。

はいの場合position、クリックされたアイテムではなく、新しく作成されたアイテムの位置であるため、これを使用してクリックされたアイテムのデータを取得することはできません。

そうすれば、タグを使用して、クリックした正確な ListView アイテムの子ビューを特定できます。

これを解決する別の方法は次のとおりです。

これを使用して、クリックした子ビューの親ビューの位置 (リスト内の項目の位置) を取得します。

int clickedItemPosition = yourListView.getPositionForView((View) childView.getParent());
于 2012-09-14T06:06:36.823 に答える