Кнопки Gridview

Я пытаюсь исправить свои события нажатия кнопок, и сейчас у меня есть каждая кнопка, реагирующая на то же самое. Я хочу, чтобы каждая кнопка в конечном счете делала что-то другое. В настоящее время мой код:

@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(), но я не могу понять, как это сделать (или если есть более простой способ). Любая помощь будет оценена по достоинству.

1 ответ

Вы должны использовать тег для каждой кнопки, вы сможете различать их.

button.setTag(Integer.valueOf(position);

В onClickListener вам просто нужно сделать это:

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

licensed under cc by-sa 3.0 with attribution.