我正在为Android开发一个音乐播放器应用程序。当一首歌完成后,我发送一个广播,在一个活动中,我想相应地改变播放/暂停图标。
活动接收下一首歌的广播,但我不知道如何从活动更新行。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_now_playing);
mStaggerGridLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
mRecyclerView = (RecyclerView) findViewById(R.id.now_playing_songs_list);
mRecyclerView.setLayoutManager(mStaggerGridLayoutManager);
mAdapter = new ListAdapter(this, mSongList)
mRecyclerView.setAdapter(mAdapter);
mReciever = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(MusicService.SONG_FINISHED)) {
//WANT TO CHANGE ROW ICON HERE
}
}
};
如何在活动中访问mAdapter中定义的视图?
答案 0 :(得分:2)
您必须从活动中更改模型,然后请求适配器更新视图。 Single responsibility
是oop
设计原则之一。例如,所有歌曲对象必须具有boolean
值名称isPlaying
。当用户正在播放歌曲时,必须将其设置为true
。然后当您收到broadcast
时,您会从列表中找到该歌曲并将boolean
设置为false
,然后拨打mAdapter.notifyDataSetChanged()
。在getView
方法中,您只需检查该变量并将UI
设置为暂停或播放状态。