在listview中播放下一个音频文件

时间:2016-03-01 11:14:31

标签: android listview

我正在使用媒体播放器播放带有listview的原始文件夹中的音频文件。 一切顺利,但我有问题 问题是: 当第一个音频文件结束时,它播放第二个文件,但是当第二个文件结束时,它不播放第三个文件。
问题是什么?? 我尝试在mp上添加setOnCompletionListener并重置mp并在(位置+ 1)播放audion 这是真的吗?

我有另一个问题。 当它结束播放列表视图中的第一个项目并开始播放第二个项目时,第一个项目背景仍然是彩色的(蓝色),并且它没有着色第二个项目背景。 有人可以帮我恳求

这是我的代码

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]);

}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

首先,“playSong(位置)”的位置值是什么?

它的价值取决于什么位置?