【发布时间】:2013-05-09 20:17:43
【问题描述】:
我正在尝试修复我的按钮点击事件,现在我的每个按钮都做出相同的反应。我希望每个按钮最终都能做不同的事情。我目前的代码是:
@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() 方法中传递单个按钮位置,但我不知道如何做到这一点(或者是否有更简单的方法)。任何帮助,将不胜感激。
【问题讨论】:
-
你已经完成了:你已经添加了
setId(position)。所以在你的 OnClickListener 中:使用int position = v.getId();。瞧,你有你的位置。 -
只要得到你的位置 int position = v.getId();就像@SherifelKhatib 在你的 onClick() 实现中提到的那样。
-
好的,我明白了。现在,一旦我在 onClick 中使用
position,我该怎么办。我顺便编辑了我的代码 -
当然他们的反应都是一样的:你总是调用
mpButton1Click变量,不管是什么位置。 -
@vorrtex 是的,我意识到,我只是不知道如何使用位置变量,因为你不能将它传递给 start()