次のようなビューをフォーマットするリスト アダプターを作成したいと思います。
ユーザーが画像をクリックしたときに、別の onClick を起動できるようにしたいと考えています。getView() オーバーライドで画像自体に onClick を定義しましたが、データベース内のレコードを更新してアクションを記録できるように、クリックされた行の位置を取得するにはどうすればよいですか?
次のようなビューをフォーマットするリスト アダプターを作成したいと思います。
ユーザーが画像をクリックしたときに、別の onClick を起動できるようにしたいと考えています。getView() オーバーライドで画像自体に onClick を定義しましたが、データベース内のレコードを更新してアクションを記録できるように、クリックされた行の位置を取得するにはどうすればよいですか?
まず、アダプターを表す 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
*/
}