我正在用一个 imageButton 填充一个列表视图,单击该按钮时会开始播放音频文件。
我从设置 MediaPlayer 的数据源
ImageButton.setTag("resource url")
在填充列表时。没有滚动,第一条记录可以正常播放,但是一旦我滚动,所有的 ImageButton 标记onClickListener
都丢失了。
为了启用对列表中按钮的单击,我实现了自己的customOnClick
并将其设置在 XML 部分中。
//the list row button xml:
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/play_icon"
android:layout_gravity="center_vertical"
android:tag="file_recording"
android:onClick="myOnClick" />
the customCursorAdapter:
class customCursorAdapter extends SimpleCursorAdapter {
private int layout;
Context context;
public customCursorAdapter(Context context, int layout, Cursor cursor,
String[] from, int[] to) {
super(context, layout, cursor, from, to);
this.layout = layout;
this.context = context;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder;
int flag = 1;
if (view != null) {
holder.player = (ImageButton)view.findViewById(R.id.imageButton1);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
//I get the URL of the audio file:
String recording= cursor.getString(cursor.getColumnIndex("recording"));
//set the ImageButton tag to the url:
holder.player.setTag(recording);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
final View view = inflater.inflate(layout, parent, false);
return view;
}
@Override
public long getItemId(int id) {
return id;
}
@Override
public Object getItem(int position) {
return position;
}
请帮我。