Audio 搜索栏在listview中不工作

Audio 搜索栏在listview中不工作,audio,android-listview,android-mediaplayer,seekbar,android-seekbar,Audio,Android Listview,Android Mediaplayer,Seekbar,Android Seekbar,我使用基本适配器创建了一个listview,我的问题是,当我在listview上开始第一首歌曲时,seekbar工作正常,但如果我开始播放列表中的第二首歌曲,那么第一首和第二首歌曲都会启动,但seekbar会启动 public class Adapter1 extends BaseAdapter { ArrayList<String> audioList; Context context; private static LayoutInflater inflater = null;

我使用基本适配器创建了一个listview,我的问题是,当我在listview上开始第一首歌曲时,seekbar工作正常,但如果我开始播放列表中的第二首歌曲,那么第一首和第二首歌曲都会启动,但seekbar会启动

public class Adapter1 extends BaseAdapter {
ArrayList<String> audioList;
Context context;
private static LayoutInflater inflater = null;
double timeElapsed = 0, finalTime = 0;
MediaPlayer mediaPlayer;
Handler durationHandler = new Handler();
public Adapter1(MainActivity mainActivity, ArrayList<String> audioList) {

    this.context = mainActivity;
    this.audioList = audioList;
}

@Override
public int getCount() {
    return audioList.size();
}
@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    View myView = convertView;
    final ImageView imgIcon, imgPlay, imgPause;
    final String fileName = audioList.get(position);
    final String path="/Music/AudioFile/";
    final TextView tvTotalTime,duration;
    final SeekBar seekbar;
    mediaPlayer = new MediaPlayer();

    if (myView == null) {
        LayoutInflater inflater = LayoutInflater.from(context);
        myView = inflater.inflate(R.layout.video_adapter, null);
        imgPlay = (ImageView) myView.findViewById(R.id.imgPlay);
        imgPause = (ImageView) myView.findViewById(R.id.imgPause);
        seekbar =(SeekBar)myView.findViewById(R.id.seekbar);
        tvTotalTime =(TextView)myView.findViewById(R.id.tvTotalTime);
        duration =(TextView)myView.findViewById(R.id.duration);

        final Runnable updateSeekBarTime = new Runnable() {
            public void run() {
                timeElapsed = mediaPlayer.getCurrentPosition();

                seekbar.setProgress((int) timeElapsed);
                tvTotalTime.setText(String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) finalTime), TimeUnit.MILLISECONDS.toSeconds((long) finalTime)));

                double timeRemaining = finalTime - timeElapsed;
                duration.setText(String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) timeRemaining), TimeUnit.MILLISECONDS.toSeconds((long) timeRemaining) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) timeRemaining))));
                durationHandler.postDelayed(this, 100);
            }
        };
        seekbar.setClickable(true);

        final int personPosition = position;
        seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (fromUser) {
                    mediaPlayer.seekTo(progress);
                }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });
        Log.e("Checking File:", "Checking=======:" + fileName);
        imgPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (mediaPlayer.isPlaying()) {
                    mediaPlayer.stop();
                    Toast.makeText(context, "Stop" + position, Toast.LENGTH_SHORT).show();
                } else {
                    mediaPlayer = MediaPlayer.create(context, Uri.parse(Environment.getExternalStorageDirectory().getPath() + path + fileName));
                    mediaPlayer.start();
                    Toast.makeText(context, "Playing" + position, Toast.LENGTH_SHORT).show();
                    imgPlay.setVisibility(View.INVISIBLE);
                    imgPause.setVisibility(View.VISIBLE);
                    timeElapsed = mediaPlayer.getCurrentPosition();
                    seekbar.setProgress((int) timeElapsed);
                    durationHandler.postDelayed(updateSeekBarTime, 100);
                    finalTime = mediaPlayer.getDuration();
                    seekbar.setMax((int) finalTime);
                    Log.e("Checking File:", "Checking=======:" + fileName);
                }
            }
        });

        imgPause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mediaPlayer.pause();
                Toast.makeText(context, "Paused" + position, Toast.LENGTH_LONG).show();
                imgPause.setVisibility(View.INVISIBLE);
                imgPlay.setVisibility(View.VISIBLE);
            }
        });

        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {

                imgPause.setVisibility(View.INVISIBLE);
                imgPlay.setVisibility(View.VISIBLE);
            }
        });
    }
    return myView;
}
公共类适配器1扩展了BaseAdapter{
ArrayList听力列表;
语境;
专用静态充气机=空;
双时间流逝=0,最终时间=0;
媒体播放器;
Handler durationHandler=新处理程序();
公共适配器1(MainActivity MainActivity,ArrayList audioList){
this.context=main活动;
this.audioList=audioList;
}
@凌驾
public int getCount(){
返回audioList.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图myView=convertView;
最终图像视图imgIcon、imgPlay、imgPause;
最终字符串文件名=audioList.get(位置);
最终字符串路径=“/Music/AudioFile/”;
最终文本视图tvTotalTime,持续时间;
最终SeekBar SeekBar;
mediaPlayer=新的mediaPlayer();
if(myView==null){
LayoutFlater充气机=LayoutFlater.from(上下文);
myView=充气机。充气(R.layout.video_适配器,空);
imgPlay=(ImageView)myView.findviewbyd(R.id.imgPlay);
imgPause=(ImageView)myView.findviewbyd(R.id.imgPause);
seekbar=(seekbar)myView.findviewbyd(R.id.seekbar);
tvTotalTime=(TextView)myView.findViewById(R.id.tvTotalTime);
duration=(TextView)myView.findViewById(R.id.duration);
final Runnable updatesekekbartime=new Runnable(){
公开募捐{
timeappeased=mediaPlayer.getCurrentPosition();
seekbar.setProgress((int)timepassed);
tvTotalTime.setText(String.format(“%d min,%d sec”,TimeUnit.millizes.toMinutes((长)finalTime),TimeUnit.millizes.toSeconds((长)finalTime)));
双倍剩余时间=最终时间-已用时间;
duration.setText(String.format(“%d min,%d sec”,TimeUnit.millides.toMinutes((长)剩余时间),TimeUnit.millides.toSeconds((长)剩余时间)-TimeUnit.MINUTES.toSeconds(TimeUnit.millides.toMinutes((长)剩余时间));
durationHandler.postDelayed(这个,100);
}
};
seekbar.setClickable(真);
最终int人员位置=位置;
seekbar.setOnSeekbarchaneListener(新的seekbar.onSeekbarchaneListener(){
@凌驾
public void onProgressChanged(SeekBar-SeekBar、int-progress、boolean-fromUser){
如果(来自用户){
mediaPlayer.seekTo(进度);
}
}
@凌驾
开始跟踪触摸时的公共无效(SeekBar SeekBar){
}
@凌驾
TopTrackingTouch(SeekBar SeekBar)上的公共无效{
}
});
Log.e(“检查文件:”,“检查===========:”+文件名);
imgPlay.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
Toast.makeText(上下文,“Stop”+位置,Toast.LENGTH_SHORT.show();
}否则{
mediaPlayer=mediaPlayer.create(context,Uri.parse(Environment.getExternalStorageDirectory().getPath()+path+fileName));
mediaPlayer.start();
Toast.makeText(上下文,“播放”+位置,Toast.LENGTH_SHORT.show();
imgPlay.setVisibility(View.INVISIBLE);
imgPause.setVisibility(View.VISIBLE);
timeappeased=mediaPlayer.getCurrentPosition();
seekbar.setProgress((int)timepassed);
postDelayed(UpdateSekBarTime,100);
finalTime=mediaPlayer.getDuration();
seekbar.setMax((int)finalTime);
Log.e(“检查文件:”,“检查===========:”+文件名);
}
}
});
imgPause.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mediaPlayer.pause();
Toast.makeText(上下文,“暂停”+位置,Toast.LENGTH_LONG.show();
imgPause.setVisibility(视图不可见);
imgPlay.setVisibility(View.VISIBLE);
}
});
mediaPlayer.setOnCompletionListener(新的mediaPlayer.OnCompletionListener(){
@凌驾
完成时的公共作废(MediaPlayer mp){
imgPause.setVisibility(视图不可见);
imgPlay.setVisibility(View.VISIBLE);
}
});
}
返回myView;
}
}