رفتن به مطلب
  • 0

مشکل در تغییر image آیتم کلیک شده در recyclerview (حل شده)


fazly

سوال

سلام دوستان

من میخوام مثل اپ آخرین خبر کاربر بتونه با کلیک روی یه image button که داخل آیتم های recyclerview هست فقط همون آیتم ایمیج باتنش تغییر کنه (آیکنش عوض بشه) ولی وقتی روش کلیک میکنم چندتا دیگه از آیتم های recyclerview هم تغییر میکنه!!!

 

code

 public class myViewHolder extends RecyclerView.ViewHolder {

        ImageButton imgBtnBag;

        public myViewHolder(View itemView) {
            super(itemView);

            imgBtnBag = (ImageButton) itemView.findViewById(R.id.imgbtn_add_to_bag);


            imgBtnBag.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   imgBtnBag.setImageResource(R.drawable.ic_added);
                }
            });

        }
  }

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

5 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

درود

شما رویداد کلیک رو به جای myviewholder بیایید توی OnBindViewHolder تعریف کنید

قبل از اسم btn اتون باید holder هم بنویسید تا بتونید ازش استفاده کنید :

 

 holder.imgBtnBag.setOnClickLis...

نتجیه رو گزارش کنید

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 47 دقیقه قبل، fazly گفته است :

ممنون از پاسخ تون

این کارم انجام دادم ولی بازم همون مشکل رو داره

کل کدهای کلاس RecyclerViewAdapter  رو بزارید لطفا

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 22 ساعت قبل، مهدی ایزدی گفته است :

کل کدهای کلاس RecyclerViewAdapter  رو بزارید لطفا

public class RecyclerProductsListAdapter extends RecyclerView.Adapter<RecyclerProductsListAdapter.myViewHolder> {

    private Context context;
    private ArrayList<String> list;

    public RecyclerProductsListAdapter(Context context, ArrayList<String> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public myViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     
        View view = LayoutInflater.from(context).inflate(R.layout.item_row_products_list_rv,parent,false);
        
        return new myViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final myViewHolder holder, int position) {

      holder.imgBtnBag.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    holder.imgBtnBag.setImageResource(R.drawable.ic_added);
                }
            });
      
    }


    public class myViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        TextView tv_ProductsName;
        ImageButton imgBtnBag;

        public myViewHolder(View itemView) {
            super(itemView);
            tv_ProductsName = (TextView) itemView.findViewById(R.id.tv_item_row_name_product);
            imgBtnBag = (ImageButton) itemView.findViewById(R.id.imgbtn_add_to_bag);

        }

	}

    @Override
    public int getItemCount() {
        return list.size();
    }

}

 

در 23 ساعت قبل، مهدی ایزدی گفته است :

درود

شما رویداد کلیک رو به جای myviewholder بیایید توی OnBindViewHolder تعریف کنید

قبل از اسم btn اتون باید holder هم بنویسید تا بتونید ازش استفاده کنید :

 


 holder.imgBtnBag.setOnClickLis...

نتجیه رو گزارش کنید

 

البته اینکه بیایم رویداد کلیک رو توی  OnBindViewHolder تعریف کنیم فکر کنم کار خوبی نباشه!

 

نقل قول

The method onBindViewHolder is called every time when you bind your view with object which just has not been seen. And every time you will add new listener

 

stackoverflow.com/questions

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون دوستان مشکل حل شد

باید یه متغییر میذاشتم تو list بعدش وقتی کلیک می شد اون متغیر رو تغییر میدادم آخرشم داخل  OnBindViewHolder  یه if واسه اینکه اگه تغییر کرده دستور رو اجرا کنه

بازم ممنون از دوستانی که پاسخ دادند

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...