1

我正在用一个 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;
        }

请帮我。

4

1 回答 1

0

尝试OnClickListener在适配器getView()功能中设置。

于 2013-05-02T11:09:32.063 回答