我制作了一个listview音乐播放器。它可以播放,但是我目前遇到两个问题。 在列表视图项(1)的第一行上,当您单击播放时,它将开始播放;当您从列表视图项(2)单击播放时,列表视图项(1)不会停止,从而允许项(2)开始重新。请提供修复解决方案。
CustomMusicAdapter.java
public class CustomMusicAdapter extends BaseAdapter {
private Context context;
private int layout;
private ArrayList<Music> arrayList;
private MediaPlayer player;
private Boolean flag = true;
public CustomMusicAdapter(Context context, int layout, ArrayList<Music> arrayList) {
this.context = context;
this.layout = layout;
this.arrayList = arrayList;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
private class ViewHolder {
TextView txtName, txtSinger;
ImageView ivPlay, ivStop, ivPause;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null){
viewHolder = new ViewHolder();
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(layout, null);
viewHolder.txtName = (TextView) convertView.findViewById(R.id.textName);
viewHolder.txtSinger = (TextView) convertView.findViewById(R.id.txtSinger);
viewHolder.ivPlay = (ImageView) convertView.findViewById(R.id.ivPlay);
viewHolder.ivStop = (ImageView) convertView.findViewById(R.id.ivStop);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
final Music music = arrayList.get(position);
viewHolder.txtName.setText(music.getName());
viewHolder.txtSinger.setText(music.getSinger());
//Play Music Setup
viewHolder.ivPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flag){
player = MediaPlayer.create(context, music.getSong());
Toast.makeText(context, "Hymn Tune Playing", Toast.LENGTH_SHORT).show();
flag = false;
}
if (player.isPlaying()){
player.pause();
viewHolder.ivPlay.setImageResource(R.drawable.ic_play);
} else {
player.start();
viewHolder.ivPlay.setImageResource(R.drawable.ic_pause);
}
}
});
// stop player
viewHolder.ivStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!flag) {
player.stop();
player.release();
flag = true;
}
viewHolder.ivPlay.setImageResource(R.drawable.ic_play);
}
});
return convertView;
}
}
Custom_music_row
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/ivMusic"
android:layout_width="44dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:src="@drawable/ic_lmusic" />
<TextView
android:id="@+id/textName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginStart="48dp"
android:text="Song List"
android:textColor="#16c15b"
android:textSize="22sp"
android:layout_marginLeft="48dp" />
<TextView
android:id="@+id/txtSinger"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/textName"
android:layout_below="@+id/seekBar1"
android:text="Singer"
android:textColor="#645506"
android:textSize="18sp"
android:layout_alignLeft="@+id/textName" />
<ImageView
android:id="@+id/ivPlay"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_toLeftOf="@id/ivStop"
android:layout_marginRight="20dp"
android:src="@drawable/ic_play"/>
<ImageView
android:id="@+id/ivStop"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_stop"
android:layout_alignParentRight="true"/>
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_below="@id/ivStop"
android:layout_alignParentRight="true"
android:background="#565858"
android:indeterminate="false" />
</RelativeLayout>