Воспроизведение звука на основе выбранного элемента listview

#android #audio #mediarecorder

#Android #Аудио #mediarecorder

Вопрос:

В моем приложении есть подробный просмотр из ListView. Внутри DetailView я могу записывать, сохранять на SD-карте и воспроизводить аудиофайл (outputFile), проблема в том, что это всегда самый последний записанный звук, независимо от того, какой элемент нажат в моем ListView. Как я могу связать записанный выходной файл с выбранным элементом, на который нажат DetailView? Я надеюсь, что это имеет смысл. Заранее спасибо.

 play.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) throws IllegalArgumentException,SecurityException,IllegalStateException {
            MediaPlayer m = new MediaPlayer();

            try {
                m.setDataSource(outputFile); //AUDIO DATA SOURCE outputFile
            }

            catch (IOException e) {
                e.printStackTrace();
            }

            try {
                m.prepare();
            }

            catch (IOException e) {
                e.printStackTrace();
            }

            m.start();
            Toast.makeText(getActivity().getBaseContext(), "Playing audio", Toast.LENGTH_LONG).show();
        }
  

Комментарии:

1. Проблема заключается в адаптере и данных, введенных в адаптер.

Ответ №1:

Я не знаю, чего вы хотите полностью, но следующее будет работать в ответ на ваш вопрос.

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

 private HashMap<String, String> hm;

public MyAdapter(){
   hm = new HashMap<>();
}
  

После того, как вы записали и сохранили аудио, назначьте счетчик для записей 0, 1,2,… И сохраните следующее

 hm.put("Position" amp; counter, outputFilePath);
  

Затем в вашей игре.OnClickListener использует следующее в качестве источника данных

 m.setDataSource(hm.get("Position" amp; itemPosition));