У меня есть GridLayout, полный кнопок (в XML), которые используют теги для воспроизведения определенных c звуков при нажатии кнопки в зависимости от ее тега.
Я пытаюсь передать код в моей функции OnClick «playSound» с точностью до OnClickListener, и при этом достигается тот же результат, но с использованием программно сгенерированных кнопок.
Так вот, как я привык проигрывать свои звуки: 1006 * (работа с кнопками XML)
public void playSound(View view) {
final Button soundButton = (Button) view;
mediaPlayer = MediaPlayer.create(this, getResources().getIdentifier(soundButton.getTag().toString(), "raw", getPackageName()));
mediaPlayer.start();
}
Вот как я теперь программно добавляю кнопки: (до XML GridLayout)
Button[] button = new Button[3];
GridLayout grid;
List<String> list;
list = new ArrayList<>();
list.add("Dog");
list.add("Cat");
list.add("Pig");
private void test() {
grid = (findViewById(R.id.gridLayout));
for (int i = 0; i < button.length; i++) {
button[i] = new Button(this);
int buttonText = i;
// int buttonSound = i;
// button[i].setTag(list.get(buttonSound));
button[i].setText(list.get(buttonText));
button[i].setOnClickListener(btnClicked);
grid.addView(button[i]);
}
}
И вот как мне теперь нужно обрабатывать мою функцию "playSound": (с использованием OnClickListener, а не "OnClick")
View.OnClickListener btnClicked = new View.OnClickListener() {
@Override
public void onClick(View v) {
}
};
Я не уверен, возможно ли по-прежнему читать Теги через OnClickListener и создание MediaPlayer таким образом, я изо всех сил пытаюсь удовлетворить автокоррекцию Android Studio, но я думал о реализации массива всех звуковых файлов и вызове из этого массива при создании моего MediaPlayer.
int[] buttonSound = new int[]{R.raw.dog, R.raw.cat, R.raw.pig};
Как я могу совершить sh это?