我正在实现来自 this tutorial 的音乐应用程序.
有一个BaseAdapter类用来显示轨道列表,还有一个MusicPlayer类用来播放音乐。两者都是我的主要 Activity 类的变量。
public class MainActivity extends Activity implements MediaPlayerControl{
private MediaPlayer musicSrv;
private BaseAdapter songAdt;
...
MusicPlayer 在当前完成时播放下一首轨道。向 BaseAdapter 发送消息以更改每个新播放轨道的显示(例如更改当前轨道的颜色)的最佳方法是什么?
编辑
根据评论,使用接口(interface)good似乎是个不错的选择。有人可以写一个详细的答案来解释如何做吗?谢谢。
最佳答案
感谢评论,我设法实现了一个带有接口(interface)的解决方案。
这是我的主要 Activity 类,每次更改歌曲时都会刷新 BaseAdapater:
public class MainActivity extends Activity implements MusicService.SongChangedListener {
private MediaPlayer musicSrv;
private BaseAdapter songAdt;
...
@Override
public void songChanged(Song currentSong){
songAdt.notifyDataSetChanged(); // refresh view
}
还有我的 MusicService 类:
public class MusicService extends Service implements MediaPlayer.OnPreparedListener{
...
private MainActivity activity;
...
public void setActivity(MainActivity act){
//set the activity
activity = act;
}
public interface SongChangedListener {
void songChanged(Song song);
}
...
public void playSong(){
// this function is called each time a new song is played
activity.songChanged(playSong);
...
}
关于android - 如何处理 MediaPlayer 和 BaseAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38052849/