Создание динамических кнопок с выпуском цикла (Android, JAVA) - PullRequest
1 голос
/ 30 июня 2019

Я пытаюсь создать код, который динамически создает разные кнопки медиаплеера в зависимости от количества wav-файлов, созданных в отдельной активности Android Studio.

Каждый файл WAV сохраняется со следующим путем к файлу

/data/data/com.example.androidaudiorecorder/files/event1.wav

/data/data/com.example.androidaudiorecorder/files/event2.wav

/data/data/com.example.androidaudiorecorder/files/event3.wav

Это код, который создает кнопки и помещает их в массив:

   Button[] buttonsPlay = new Button[data];


    for (int loop = 0; loop < data ; loop++) {
        playID ++;

        Button button = new Button(this);
        button.setId(playID);
        button.setText("Play event "+playID);
        String buttonName = "PlayEvent" + playID;
        button.setLayoutParams(new LinearLayout.LayoutParams(500, 50));
        LinearLayout.LayoutParams ll = (LinearLayout.LayoutParams)button.getLayoutParams();
        ll.gravity = Gravity.CENTER;
        button.setLayoutParams(ll);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        button.setLayoutParams(params);
        buttonsPlay[loop] = button;
    }

После создания каждой кнопки я хочу просмотреть все кнопки в массиве и воспроизвести соответствующий файл WAV.

Пока это моя попытка

        playID = 0;

  for (int loop = 0 ; loop < buttonsPlay.length ; loop ++){
        playID++;


        Toast.makeText(  ctx, "play is " +  playID , Toast.LENGTH_SHORT).show();

        buttonsPlay[loop] = (Button) findViewById(  buttonsPlay[loop].getId());
        buttonsPlay[loop].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String dataSource = "/data/data/com.example.androidaudiorecorder/files/event"+ playID +".wav";


                playEvent( dataSource);


            }

        });

К сожалению, каждый раз, когда я играю в wav, он воспроизводит только последнее созданное событие wav.

Например, если там, где 10 wav-файлов, воспроизводится каждая нажатая кнопка:

"/ данные / данные / com.example.androidaudiorecorder / файлы / event10.wav"

Если у кого-нибудь есть какие-либо советы о том, как это исправить, я был бы очень признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...