Audio 搜索栏在listview中不工作
我使用基本适配器创建了一个listview,我的问题是,当我在listview上开始第一首歌曲时,seekbar工作正常,但如果我开始播放列表中的第二首歌曲,那么第一首和第二首歌曲都会启动,但seekbar会启动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;
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;
}
}