从活动中访问Recyclerview视图

时间:2016-03-31 19:39:04

标签: android android-recyclerview

我正在为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中定义的视图?

1 个答案:

答案 0 :(得分:2)

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