Как воспроизвести указанный c аудиофайл при нажатии определенного c текстового представления в виде списка? - PullRequest
0 голосов
/ 27 апреля 2020

Мое приложение имеет перевод некоторых фраз Engli sh (на двух разных языках), заключенных в ListView, заполняемый через пользовательский ArrayAdapter, который имеет собственный ArrayList. Поэтому я хочу, чтобы мое приложение воспроизводило произношение фраз при нажатии определенной фразы c (TextView внутри ListView).

Проблема в том, что я не могу извлечь идентификатор аудио с помощью положение, в котором я хочу вызвать прослушиватель щелчков в textView.

Вот изображение пользовательского интерфейса моего приложения

Я попытался сделать следующее:

  1. Я попытался настроить onClickListener, но таким образом я не смог бы извлечь аудиофайлы, вложенные в пользовательский ArrayList, который я создал.

  2. Я попытался настроить onItemClickListener, но его использование сделало бы ListView кликабельным (но я хочу, чтобы мое приложение реагировало при нажатии TextViews).

Мой пользовательский ArrayList содержит следующие данные:

  • Engli sh фразы и слова в виде строки.
  • Перевод слов Engli sh на двух разных языках в виде строк.
  • аудиофайлы для произношения перевода на обоих языках.

Я также настроил методы получения, которые бы возвращали мне аудиофайлы (извлекая их из массива) из каждого список в listView, как я хотел воспроизвести аудио файлы, выполнив что-то вроде этого:

 whenLanguage1TextViewIsClicked(){
    MediaPlayer mp = MediaPlayer.create(MyActivity.this, getTheAudiFileForLanguage1());
    mp.start();
    }

 whenLanguage2TextViewIsClicked(){
    MediaPlayer mp = MediaPlayer.create(MyActivity.this, getTheAudiFileForLanguage2());
    mp.start();
    }

1 Ответ

0 голосов
/ 27 апреля 2020

Прежде всего, не забудьте закрыть ресурс Mediaplayer после его завершения. во-вторых, лучше создать базу данных, используя Room или SQLite, а ваш listview (или recyclerview) адаптер просто хранит идентификаторы. в вашем приемнике элементов извлеките свой идентификатор по позиции и ищите в автономной / онлайн-базе данных. в конце концов, найдите соответствующий файл на вашем локальном хранилище / или сервере и с классом проигрывателя SIGNLETON воспроизведите его. это должно решить вашу проблему.

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