单击列表视图中的特定文本视图时如何播放特定的音频文件?

问题描述 投票:-1回答:1

我的应用程序翻译了包含在通过具有自定义ArrayList的自定义ArrayAdapter填充的ListView中的一些英语短语(用两种不同的语言)。因此,我希望我的应用在单击特定短语(ListView中的TextView)时播放这些短语的发音。

问题是,由于我想在textView上单击点击侦听器,因此无法按位置提取音频的ID。

Here is the image of my app UI

我尝试做以下事情:

  1. 我尝试设置onClickListener,但是那样我将无法提取附加在我创建的自定义ArrayList中的音频文件。

  2. 我尝试设置onItemClickListener,但使用它只会使ListView可单击(但是我希望我的应用在单击TextView时做出响应)。

我的自定义ArrayList具有以下数据:

  • [英语短语和单词作为字符串。
  • [将两种不同语言的英语单词翻译成字符串。
  • 用于两种语言的翻译发音的音频文件。

我还设置了getter方法,如我希望通过执行以下操作来播放音频文件那样,它会从listView的每个列表中返回音频文件(通过从arraylist中提取):

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

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

我的应用程序翻译了包含在通过具有自定义ArrayList的自定义ArrayAdapter填充的ListView中的一些英语短语(用两种不同的语言)。所以我想让我的应用播放...

android listview android-mediaplayer onclicklistener onitemclicklistener
1个回答
0
投票

首先,不要忘记在完成Mediaplayer资源后将其关闭。其次,最好使用Room或SQLite创建一个数据库,而您的listview(或recyclerview)适配器仅存储ID。在项目侦听器中,通过位置提取您的ID并在离线/在线数据库中查找。毕竟,从本地存储/或服务器中找到相应的文件,然后使用SIGNLETON播放器类进行播放。这应该可以解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.