【问题标题】:Play next audio file in listview在列表视图中播放下一个音频文件
【发布时间】:2016-03-01 11:14:30
【问题描述】:

我正在使用媒体播放器通过列表视图播放原始文件夹中的音频文件。 一切正常,但我有一个问题。
问题是: 当第一个音频文件结束时,它会播放第二个文件,但当第二个文件结束时,它不会播放第三个文件。
问题是什么?? 我尝试在 mp 上添加 setOnCompletionListener 并重置 mp 并在 (position+1) 中播放音频 是真的吗??

我还有一个问题。 当它结束播放 listview 中的第一个项目并开始播放第二个项目时,第一个项目的背景仍然是彩色的(蓝色),第二个项目的背景没有着色。 有人可以帮我pleaassseee

这是我的代码

private final String[] listContent = { "song1", "song2","song3"};

private final int[] resID = { R.raw.song1, R.raw.song2, R.raw.song3 };


    mp = new MediaPlayer();
    mainList = (ListView)     findViewById(R.id.listView1);
    final ArrayAdapter<String> adapter =   new ArrayAdapter<String>(this,
                                                             android.R.layout.simple_list_item_1, listContent);
                                                            mainList.setAdapter(adapter);

        mainList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void    onItemClick(AdapterView<?> adapterView, View view,
                                    final int position,final long id) {
                playSong(position);

                String selectedSweet =     mainList.getItemAtPosition(position).toString();
                tv1.setText(selectedSweet);
                   System.out.println(selectedSweet);

                   mainList.setSelector(R.drawable.selecteditem);
                   btnn2.setBackgroundResource(R.drawable.play);        



                   mp.setOnCompletionListener(new    OnCompletionListener(){

                                @Override public void   onCompletion(MediaPlayer mp){  

            String selectedSweet2 =    mainList.getItemAtPosition(position+1).toString();
            tv1.setText(selectedSweet2);

//There to play next file
               mainlist.setSelection(position+1);
              mainList.setSelector(R.drawable.selecteditem);

                                playSong2(position);


                                }
});}
                        private void playSong2(int    songIndex)
                                {

                                    mp.reset();
    mp =    MediaPlayer.create(getApplicationContext(), resID[songIndex]);

                                    mp.start();


                                }});






    }




public void playSong(int songIndex) {

    mp.reset();
    mp = MediaPlayer.create(getApplicationContext(), resID[songIndex]);

}

【问题讨论】:

    标签: android listview


    【解决方案1】:

    你的两个问题的答案是歌曲的结尾不会导致listview的索引发生任何变化。尝试在歌曲结束时更新列表视图索引。

    【讨论】:

    • 好的。但是如何在歌曲结束时更新列表视图索引??
    【解决方案2】:

    首先,“playSong(position)”的位置值是多少?

    它的位置值是多少?

    【讨论】:

    • 到listview的选中项的位置,
    • 您使用调试器检查过吗?因为它以 0 开头,而不是 1
    • 每次调用"position"时,在它下面设置:Log.wtf("position : ", String.valueOf(position)); 然后给我们看日志文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多