我的应用程序翻译了包含在通过具有自定义ArrayList的自定义ArrayAdapter填充的ListView中的一些英语短语(用两种不同的语言)。因此,我希望我的应用在单击特定短语(ListView中的TextView)时播放这些短语的发音。
问题是,由于我想在textView上单击点击侦听器,因此无法按位置提取音频的ID。
Here is the image of my app UI
我尝试做以下事情:
我尝试设置onClickListener,但是那样我将无法提取附加在我创建的自定义ArrayList中的音频文件。
我尝试设置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中的一些英语短语(用两种不同的语言)。所以我想让我的应用播放...
首先,不要忘记在完成Mediaplayer
资源后将其关闭。其次,最好使用Room或SQLite
创建一个数据库,而您的listview
(或recyclerview
)适配器仅存储ID。在项目侦听器中,通过位置提取您的ID并在离线/在线数据库中查找。毕竟,从本地存储/或服务器中找到相应的文件,然后使用SIGNLETON
播放器类进行播放。这应该可以解决您的问题。