0

リストの行に 2 つのボタンと 3 つのテキスト ビューを含むリスト ビュー (つまり、オーディオのリスト) を生成するアプリ。2 つのボタンは、基本アダプターを実装するアダプターを使用してクリック可能にしました。再生ボタンをクリックすると、ボタン(再生)の背景が変更されました。しかし、問題は、位置0、10、20、31、41のように複数の再生ボタンの背景が変更されたことです行をクリックして、選択したリストビューの背景を変更して、再生中のオーディオを他のものと区別する方法を知りたい...

pls..私にその解決策を提案してください..次の私のアダプタークラスに事前に感謝します

public View getView(final int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;
        if (convertView == null) {
            convertView = l_Inflater.inflate(R.layout.lv_layout1, null);
            holder = new ViewHolder();
            holder.Title = (TextView) convertView.findViewById(R.id.Title);
            holder.Date = (TextView) convertView.findViewById(R.id.Date);
            holder.Time = (TextView) convertView.findViewById(R.id.Time);
            holder.Duration = (TextView) convertView.findViewById(R.id.Duration1);
            holder.view = (Button) convertView.findViewById(R.id.View);
            holder.play = (Button) convertView.findViewById(R.id.Play);
            holder.r_layout = (RelativeLayout) convertView.findViewById(R.id.r_layout);


            holder.Duration.setVisibility(View.INVISIBLE);

            holder.play.setBackgroundResource(0x7f020009);


            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }


        holder.play.setOnClickListener(new View.OnClickListener() 
        {

            public void onClick(View convertView) throws IllegalStateException 
            {
                // TODO Auto-generated method stub

                //here is code for play/stop the audio
holder.play.setBackgroundResource(0x7f020009);





            }
        });
        holder.view.setOnClickListener(new View.OnClickListener() {

            public void onClick(View convertView) {
                // TODO Auto-generated method stub
                Log.i("View","hai");
                Intent i=new Intent(context,audio_player.class);
                Bundle bd=new Bundle();

                String sel=itemDetailsrrayList.get(position).getTitle();
                String dur=itemDetailsrrayList.get(position).getDuration();


                bd.putString("audioID",sel);
                bd.putString("totalDuration",dur);

                i.putExtras(bd);

                System.out.println("After intent called");



                context.startActivity(i);
                ((Activity) context).finish();



            }
        });
        return convertView;
    }

    static class ViewHolder {
        TextView Title,Date,Time,Duration;
        ListView lv;
        Button view,play;
        RelativeLayout r_layout;
    }
}
4

4 に答える 4

0

あなたはこれを試すことができます:

if (convertView == null) {
        convertView = l_Inflater.inflate(R.layout.lv_layout1, null);
        holder = new ViewHolder();
        holder.Title = (TextView) convertView.findViewById(R.id.Title);
        holder.Date = (TextView) convertView.findViewById(R.id.Date);
        holder.Time = (TextView) convertView.findViewById(R.id.Time);
        holder.Duration = (TextView) convertView.findViewById(R.id.Duration1);
        holder.view = (Button) convertView.findViewById(R.id.View);
        holder.play = (Button) convertView.findViewById(R.id.Play);
        holder.r_layout = (RelativeLayout) convertView.findViewById(R.id.r_layout);


        holder.Duration.setVisibility(View.INVISIBLE);




        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
 holder.play.setBackgroundResource(0x7f020009);
于 2013-01-28T07:00:01.863 に答える
0

これを試して、

同じ問題に直面しています。内部のボタンを使用していますgetViewButtonオプションをクリックしても機能しません。Button親切に使用する代わりにtextView。そして、OnClickListener()

 holder.text.setOnClickListener(new View.OnClickListener() {

    public void onClick(View convertView) {
   }
  };

それが動作します。

于 2013-01-28T07:10:39.847 に答える
0

クリックされたアイテムの行の位置を知りたい場合と、行のどのビューがタップされたかを知りたい場合はよくあります。これは、タブレット UI ではさらに重要になります。

これは、次のカスタム アダプターを使用して行うことができます。

private static class CustomCursorAdapter extends CursorAdapter {

    protected ListView mListView;

    protected static class RowViewHolder {
        public TextView mTitle;
        public TextView mText;
    }

    public CustomCursorAdapter(Activity activity) {
        super();
        mListView = activity.getListView();
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        // do what you need to do
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        View view = View.inflate(context, R.layout.row_layout, null);

        RowViewHolder holder = new RowViewHolder();
        holder.mTitle = (TextView) view.findViewById(R.id.Title);
        holder.mText = (TextView) view.findViewById(R.id.Text);

        holder.mTitle.setOnClickListener(mOnTitleClickListener);
        holder.mText.setOnClickListener(mOnTextClickListener);

        view.setTag(holder);

        return view;
    }

    private OnClickListener mOnTitleClickListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            final int position = mListView.getPositionForView((View) v.getParent());
            Log.v(TAG, "Title clicked, row %d", position);
        }
    };

    private OnClickListener mOnTextClickListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            final int position = mListView.getPositionForView((View) v.getParent());
            Log.v(TAG, "Text clicked, row %d", position);
        }
    };
}
于 2013-01-28T07:14:12.287 に答える