3

ボタンクリックイベントを修正しようとしていますが、現在、すべてのボタンが同じように反応しています。私は、各ボタンが最終的に異なることをしたいと考えています。私のコードは現在:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    Button myButton;

    if (convertView == null) {
        myButton = new Button(mContext);
        myButton.setLayoutParams(new GridView.LayoutParams(230, 150));
        myButton.setPadding(8, 8, 8, 8);

        convertView = myButton;
    } else {
        myButton = (Button) convertView;
    }

    myButton.setText(mButtons[position]);
    myButton.setId(position);
    myButton.setOnClickListener(new MyOnClickListener(position));
    return convertView;
}

class MyOnClickListener implements OnClickListener {

    private final int position;
    final MediaPlayer mpButton1Click = MediaPlayer.create(mContext,
            R.raw.myAudio);

    public MyOnClickListener(int position) {

        this.position = position;

    }

    public void onClick(View v) {

        int position = v.getId();

        if(position == 0){
        mpButton1Click.start();
        }

    }

}

現在、メディア プレーヤーを使用していますが、変更される可能性があります。おそらく onClick() メソッドで個々のボタンの位置を渡す必要があることはわかっていますが、その方法がわかりません (または、もっと簡単な方法があるかどうか)。どんな助けでも大歓迎です。

4

1 に答える 1

2

ボタンごとにタグを使用する必要があります。これらを区別できるようになります。

button.setTag(Integer.valueOf(position);

onClickListener では、これを行うだけです:

Integer position = (Integer)view.getTag();
于 2013-05-09T20:30:06.223 に答える