1

次のようなビューをフォーマットするリスト アダプターを作成したいと思います。

リストエントリ

ユーザーが画像をクリックしたときに、別の onClick を起動できるようにしたいと考えています。getView() オーバーライドで画像自体に onClick を定義しましたが、データベース内のレコードを更新してアクションを記録できるように、クリックされた行の位置を取得するにはどうすればよいですか?

4

1 に答える 1

3

まず、アダプターを表す ListView が必要です。これをすでにどこかに保存している場合は、素晴らしいです。そうでない場合は、onClick() に渡されたビューを取得し、その getParent() メソッドを 2 回 (または、クリックされた項目のビュー内で画像がより深くネストされている場合はそれ以上) 呼び出して、ListView を取得できます。

そこから、onClick() に渡されたビューで ListView.getPositionForView() を呼び出します。これにより、リスト アダプター内でクリックされた項目の位置を表す int が得られます。そこから、あなたはそれでやりたいことが何でもできます。

例えば:

public void onClick(View v){
    ListView lv = (ListView)(v.getParent().getParent()); // you may need more getParent()s and/or extra casting
    int position = lv.getPositionForView(v);
    /* Do whatever database stuff
     * You want to do
    */
}
于 2010-07-03T03:16:39.563 に答える