我正在为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内部定义的viewholder?

最佳答案

必须从活动更改模型,然后要求适配器更新视图。Single responsibilityoop设计原则之一。例如,所有歌曲对象都必须有一个boolean值名itisPlaying。当用户播放歌曲时,必须将其设置为true。然后,当您收到broadcast时,您可以从列表中找到该歌曲,并将boolean设置为false,然后调用mAdapter.notifyDataSetChanged()。在getView方法中,只需检查该变量并将UI设置为暂停或播放状态。

07-24 09:25