跳到下一项目的详细视图片段,来自recyclerview

时间:2019-05-17 16:09:51

标签: java android android-recyclerview detailview

我正在尝试编写一个简单的媒体播放器,其中包含歌曲列表和带有默认控制器的播放器页面。

我创建了一个自定义的Song类,一个自定义的适配器,一个托管带有Fragment的recyclerView列表的片段的MainActivity和一个托管播放器Fragment的PlayerActivity,您可以在按下列表项后找到歌曲和其他详细信息。 我设法将数据从recyclerView传递到详细信息Fragment,并且可以正常工作。它会播放正确的歌曲,并带有标题,作者和适当的背景图片。 现在,我想实现一个“下一个/上一个”按钮,该按钮可以使我看到同一片段中的下一首歌曲,但我确实找不到解决方法。 < / p>

我尝试了IndexOf()方法,因为我想必须检索ArrayList中的项目位置。我创建了一个Toast消息来显示项目的位置,但是它总是返回值“ 1”。 我也考虑过实现ViewPager,但是我不需要在不同的片段之间滑动,我只希望相同的片段显示其他数据。 有人可以帮我吗?这是我的代码的一部分:

//from ListFragment. This is where I send the data to the player:

...
@Override
public void onListItemClick(View view, int clickedItemIndex) {
    Intent playerIntent = new Intent(getActivity(), PlayerActivity.class);
    playerIntent.putExtra("StoryItem", mStoryList.get(clickedItemIndex));
    playerIntent.putParcelableArrayListExtra("StoryList", mStoryList);
    startActivity(playerIntent);
}




//from PlayerFragment. This is where I retrieve data from the list:

...
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle 
savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    //create an AudioManager object in order to manage AudioFocus
    mAudioManager = (AudioManager) 
getActivity().getSystemService(AUDIO_SERVICE);

    //retrieve data from the clicked list item in MainActivity
    Bundle data = getActivity().getIntent().getExtras();
    if (data != null) {
        ArrayList storyList = 
getActivity().getIntent().getExtras().getParcelableArrayList("StoryList");
        Story story = data.getParcelable("StoryItem");
        if (story != null && storyList != null) {
            backgroundImage = story.getBackgroundResId();
            title = story.getTitleResId();
            audio = story.getAudioResId();
            getActivity().setTitle(title);
            Toast toast = Toast.makeText(getActivity(), "Item pos: "+ 
storyList.indexOf(story), Toast.LENGTH_LONG);
            toast.show();
        }
    }

编辑:我在这里找到了答案:JAVA ArrayList cant find element via indexOf()

我必须重写对象自定义类中的equals方法,然后indexOf方法返回正确的值。

0 个答案:

没有答案