Кнопки 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.