10

Androidグリッドビューを使用して知っているように、次のことを実行して、アイテムがクリックされたときに通知を受け取ることができます。

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    Toast.makeText(PopularCapitActivity.this, "" + position, Toast.LENGTH_SHORT).show();
    }
});

また、グリッド内のセルにボタンなどのクリック可能なアイテムが含まれている場合、上記は実行されないこともわかっています。

現在、グリッドビューがあり、各セルには独自のボタンがあります。したがって、ユーザーがボタンをクリックすると、ボタンが存在するセルに基づいて独自のアクションが発生します。私の質問は、セルの位置にアクセスするにはどうすればよいですか。ボタンハンドラーで?

ありがとう

4

2 に答える 2

31

GridVIewのカスタムアダプタを使用していると仮定すると、getViewメソッドで、getViewに渡された位置を含むボタンオブジェクトにタグを追加するだけです。

button.setTag(new Integer(position));

次に、onClickListenerメソッドで、渡されたビュー(ボタン)を使用して、次の操作を実行できます。

Integer position = (Integer)view.getTag();

そして、そこから位置の値を処理します。

編集: ベストプラクティスは次のようになります:

button.setTag(Integer.valueOf(position));

整数コンストラクターを使用するのではなく。

于 2012-10-04T19:57:15.013 に答える
3
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    {
        String a = String.valueOf(position);
        Toast.makeText(getApplicationContext(), a, Toast.LENGTH_SHORT).show();
    }
});
于 2017-02-11T17:06:25.497 に答える