私のAndroidアプリケーションではListview
、リストビューの各行にテキストビューと再生/一時停止ボタンがあります。ここでは、各リスト行に音声ファイルを表示しています。ユーザーが再生ボタンをクリックすると、音声ファイルが開始され、再生ボタンのアイコンが一時停止に変わります。同じボタンをもう一度クリックすると、その音声ファイルと一時停止のアイコンが停止しますボタンが再生になります。
問題は、1 行目の再生ボタンにアクセスしているときに、別の行の再生ボタンをクリックすると、1 行目のアイコンが変わることです。この機能を実現する方法がわかりません。この問題を解決するのを手伝ってください。
customAdapter の getView() メソッド:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
RowItem_ringtone rowItem = getItem(position);
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.ringtone_row, null);
holder = new ViewHolder();
holder.txtTitle = (TextView) convertView
.findViewById(R.id.ringtoneTitle);
holder.btnPlay = (ImageButton) convertView
.findViewById(R.id.btnPlay);
holder.btnSet = (ImageButton) convertView.findViewById(R.id.btnSet);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
holder.txtTitle.setText(rowItem.getRingTitle());
holder.btnPlay.setTag(rowItem.getRingId());
holder.btnSet.setTag(rowItem.getRingId());
holder.btnPlay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getContext(), v.getTag().toString(),
Toast.LENGTH_LONG).show();
if (CustomListViewAdapter_ringtone.mp != null) {
if (CustomListViewAdapter_ringtone.mp.isPlaying()) {
CustomListViewAdapter_ringtone.mp.stop();
CustomListViewAdapter_ringtone.mp.release();
}
}
mp = MediaPlayer.create(getContext(),
Integer.parseInt(v.getTag().toString()));
mp.start();
v.setBackgroundResource(R.drawable.set_icon);
btnId = Integer.parseInt(v.getTag().toString());
}
});
return convertView;
}