دسترسی به مقدار تمامی آیتم های recyclerview

گزارش
سوال

لطفا علت گزارش خود را توضیح دهید.

گزارش لغو

با سلام خدمت شما من همچین لیستی رو دارم

لینک عکس

که اخر لیست یه گزینه سفارش هست , حالا میخوام به نام محصول , آیدی و تعدادش دسترسی داشته باشم یعنی همه محصولات رو چک کنم و اونهایی که بیشتر از ۱ عدد رو سفارش دادن رو از لیست بگیرم ممکنه کاربر از یکی ۳ تا سفارش بده و یا ممکنه از همه سفارش بده و اونهایی رو که سفارش داده تو یه صفحه دیگه نمایش بدم

امکانش هست بنده رو راهنمایی کنید ممنون از لطفتون.

در حال پیشرفت 0
اندروید - android 22 پاسخ 1637 بازدید 0

درباره نویسنده

پاسخ ها ( ۲۲ )

  1. محمد حسین جعفری پور
    0
    ۱۲, مرداد , ۱۳۹۶ در ۱۲:۵۸ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    شما باید یک adapter سفارشی داشته باشید هر مقداری که لازم بشه رو می تونید از همان adapter به دست بیارید بخشی کد را قرار دهید تا بتوانیم راهنمایتان کنیم از آموزش های سایت هم می تونید استفاده کنید تمامی آموزش های سایت از اداپتور سفارشی استفاده کرده اند.

    موفق باشید.

    0
    ۱۲, مرداد , ۱۳۹۶ در ۲:۰۱ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    سلام
    این کلاس Adapter هستش

    public class ProductRecycler extends RecyclerView.Adapter {

    ArrayList recycleInfos=new ArrayList();
    public Context context;
    public ProductRecycler(ArrayList recycleInfos,Context context){
    this.recycleInfos=recycleInfos;
    this.context = context;
    }

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

    @Override
    public void onBindViewHolder(viewHolder holder, int position) {
    ProductModel recycleInfo=recycleInfos.get(position);
    holder.ProductTitle.setText(recycleInfo.title);
    holder.Price.setText(recycleInfo.price);

    // if (!recycleInfo.option.toString().contains(“”)){
    // holder.OptionTitle.setText(recycleInfo.option);
    // holder.OptionPrice = recycleInfo.optionPrice;
    // }
    holder.id=recycleInfo.id;
    Picasso.with(context).load(“http://192.168.56.5/noonbiyar/uploads/”+recycleInfo.image).into(holder.ProductImg);

    }

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

    }
    class viewHolder extends RecyclerView.ViewHolder{

    public ImageView ProductImg;
    public NumberPicker CountProduct;
    public TextView ProductTitle;
    public TextView Price;
    public CheckBox OptionTitle;
    public String OptionPrice = “”;
    public String id=””;

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

    ProductImg =(ImageView)itemView.findViewById(R.id.ProductImage);
    ProductTitle =(TextView)itemView.findViewById(R.id.ProductTitle);
    Price =(TextView)itemView.findViewById(R.id.Price);
    CountProduct =(NumberPicker)itemView.findViewById(R.id.CountProduct);

    }
    }

    این هم تابع parse json و ست کردن آداپتور

    public void ShowProduct(){

    recycleInfos=new ArrayList();
    recycleName=new ArrayList();
    recycleImg=new ArrayList();
    recycleId=new ArrayList();
    recycleOption = new ArrayList();
    recycleOptionPrice = new ArrayList();
    recyclePrice = new ArrayList();

    recyclerView=(RecyclerView)findViewById(R.id.Product_Container);
    manager=new LinearLayoutManager(this);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(manager);
    //Toast.makeText(G.context,data,Toast.LENGTH_LONG).show();
    try {
    JSONArray jsonArray=new JSONArray(Products);
    for(int i=0;i<jsonArray.length();i++){
    JSONObject object=jsonArray.getJSONObject(i);
    Log.i("salam : ",object.getString("title"));
    recycleId.add(object.getString("id"));
    recycleName.add(object.getString("title"));
    recyclePrice.add(object.getString("price"));
    recycleImg.add(object.getString("image"));

    }

    for(int i=0;i<recycleName.size();i++){
    ProductModel recycleInfo=new ProductModel();
    recycleInfo.id=recycleId.get(i);
    recycleInfo.title=recycleName.get(i);
    recycleInfo.price =recyclePrice.get(i);
    //recycleInfo.option =recycleOption.get(i);
    //recycleInfo.optionPrice =recycleOptionPrice.get(i);
    recycleInfo.image=recycleImg.get(i);

    recycleInfos.add(recycleInfo);
    }

    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(new ProductRecycler(recycleInfos,MainActivity.this));

    } catch (JSONException e) {
    e.printStackTrace();
    }

    }

    • محمد حسین جعفری پور
      0
      ۱۲, مرداد , ۱۳۹۶ در ۲:۲۰ ق.ظ

      لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

      گزارش لغو

      شما باید مقدار ها رو در اکتیویتی دریافت کنید یعنی شما باید یک OnClickListner برای اضافه کردن نان داشته باشید در همون جا که اضافه می شود می تونید داده ها رو از recyclerView دریافت کنید یا در همان آداپتورتون
      بعد از اینکه داده رو دریافت کردید با bundle یا intent پاسش بدید به اکتیویتی دوم
      و برای اینکه بروی عوض شدن مقدار ها کنترل داشته باشید باید از TextWatcher استفاده کنید تا در صورت تغییر مقدار متغیرتان نیز آپدیت شود.
      موفق باشید.

  2. محمد حسین جعفری پور
    1
    ۱۲, مرداد , ۱۳۹۶ در ۲:۲۳ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    و کد زیر را از کد شما برداشتم شما باید مقدار های زیر را پاس بدید.

    موفق باشید.

    0
    ۱۲, مرداد , ۱۳۹۶ در ۷:۵۲ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    ممنون از راهنماییتون اما این برای یک آیتم جواب میده برای کل آیتم ها باید چه کاری انجام بدم ؟

    • محمد حسین جعفری پور
      1
      ۱۲, مرداد , ۱۳۹۶ در ۲:۳۵ ب.ظ

      لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

      گزارش لغو

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

        0
        ۱۲, مرداد , ۱۳۹۶ در ۷:۵۲ ب.ظ

        لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

        گزارش لغو

        ممنون از راهنماییتون , اما متاسفانه نتونستم کاری کنم و پروژم هم گیرش همین قسمت هست و سه روز هست درگیر اینم … امکانش هست لطف کنید همون تغییرات رو توی کد بنده بدید ؟ واقعا ممنونتون میشم

        • محمد حسین جعفری پور
          0
          ۱۲, مرداد , ۱۳۹۶ در ۸:۱۲ ب.ظ

          لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

          گزارش لغو

          خواهش می کنم باید مثل زیر عمل کنید
          ابتدا void زیر را قرار دهید.

          سپس برای اینکه آنها را توی یک آرایه ذخیره کنید .

          و برای اینکه پاسش بدید.
          Intent intent = new Intent(RegisterActivity1.this, RegisterActivity2.class);
          intent.putExtra(“nvp”, nameValuePairs);
          startActivity(intent);
          و نحوه دریافتش در اکتیویتی دوم هم همانند زیر می شود.
          ArrayList nameValuePairs = (ArrayList) intent.getSerializable(“nvp”);

          موفق باشید.

            0
            ۱۲, مرداد , ۱۳۹۶ در ۸:۲۸ ب.ظ

            لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

            گزارش لغو

            ممنون از پاسخگوییتون , اما تو recyclerView این رو چطور استفاده کنم و داینامیک باشه یعنی برای هر row یا ایتم باید یه ارایه داشته باشم باید چک کنم کدوم ها بیشتر از یک عدد سفارش دادن و برای اون یه ارایه درست کنم و مقادیرش رو توش بریزم و در نهایت یه ارایه نهایی درست کنم و همه رو بریزم توی اون و برای صفحه بعد اون رو تو حلقه بذارم و مقادیرش رو بخونم

          • محمد حسین جعفری پور
            0
            ۱۲, مرداد , ۱۳۹۶ در ۸:۵۷ ب.ظ

            لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

            گزارش لغو

            دقیقا درست متوجه شدید

            0
            ۱۲, مرداد , ۱۳۹۶ در ۸:۳۰ ب.ظ

            لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

            گزارش لغو

            ببخشید که راهنمایی هاتون رو درست متوجه نمیشم چون یکی دو ماه بیشتر نیست دارم اندروید کار میکنم الان کل روندم روی همین قسمت مونده و تمام سایت های خارجی رو بررسی کردم و هیچ کدوم راه حل درستی برای این کار ارائه نکردن , اگه لطف کنید کمکم کنید بتونم این قسمت رو انجام بدم یک دنیا ممنونتون میشم.

          • محمد حسین جعفری پور
            0
            ۱۲, مرداد , ۱۳۹۶ در ۸:۵۸ ب.ظ

            لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

            گزارش لغو

            خواهش می کنم یک بررسی دیگه می کنم

          • محمد حسین جعفری پور
            0
            ۱۲, مرداد , ۱۳۹۶ در ۹:۰۰ ب.ظ

            لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

            گزارش لغو

            فکر می کنم مسئله رو کلا اشتباه متوجه شدیم !
            شما می خواید وقتی رو دکمه + کلیک کرد و مقدار اضافه شد این مقدار رو دریافت کنید درسته ؟ شما کلیک رو کجا تعریف کردید ؟

    0
    ۱۲, مرداد , ۱۳۹۶ در ۷:۵۸ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    چون دقیقا مشکل من برای کل آیتم ها هست و اونهایی که بیشتر از یک نون رو انتخاب کردن , و ممکنه دو تا نون از هر کدوم مثلا سه تا سفارش داده شده باشه و در نهایت با دکمه سفارش که پایین صفحه هست همون ها تو لیست خرید نهایی بیاد.

    0
    ۱۲, مرداد , ۱۳۹۶ در ۹:۰۸ ب.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    نگاه کنید من یه لیست از وب دریافت می کنم با پارزش می کنم روی ریسایکلر ویو قرارش میدم , تا اینجا مشکلی نیست مقدار اولیه تعداد سفارش هر آیتم صفر هست , حالا میخوام وقتی روی دکمه سفارش کلیک شد , آیتم هایی که بیشتر یه ۱ عدد رو سفارش دادن بگیرم ممکنه کاربر از یک نون یکی سفارش بده یا از همه یا حالا به هر تعداد , مثلا برای نون بربری زد ۳ تا و زد سفارش تو لیست نهایی فقط نون بربری با تعدادش باشه یا مثلا همه رو زد همه نشون داده بشن تو صفحه بعد
    این یه نرم افزار نمونه هست نصب کنید مشاهده کنید منظورمو متوجه میشید
    http://boghche.ir/app/boghche-release.apk

    • محمد حسین جعفری پور
      0
      ۱۲, مرداد , ۱۳۹۶ در ۱۰:۰۵ ب.ظ

      لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

      گزارش لغو

      مشاهده کردم شما باید یک رویداد کلیک برای اضافه کردن داشته باشید ولی این کار یکم سخته یه ایده خیلی جالب براتون دارم اگه اون بخش که تعداد رو نمایش میدهد editText باشد میشه یک رویداد براش تعریف کرد یعنی هر وقت مقدار اون EditText عوض شده مقدار های جدید رو پاس بده به اکتیویتی که می خواهید اون رو دریافت کنید برای اینکار از کد های زیر استفاده کنید (من کل کد رو قرار دادم تا متوجه شوید ولی شما بخش مربوط به داخل Bind رو برداردید)

      این صد در صد جواب میده کد انتقال داده رو نگذاشتم خودتان قرار دهید در آن بخشی که onTextChanged باید قرار بدید یعنی هر وقت مقدار تغییر کرد این مقدا رو ارسال کن وبرای اینکه توی recyclerView مقادیر رو به یک اکتیویتی دیگه پاس بدید (حتما باید رویداد کلیک در اداپتور باشه وگرنه امکان پذیر نیست)

      موفق باشید.

        0
        ۱۲, مرداد , ۱۳۹۶ در ۱۰:۱۹ ب.ظ

        لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

        گزارش لغو

        واقعا لطف کردید این به صورت ارایه برمیگردونه ؟ فقط برای یکی جواب میده ؟ یا به تعداد انتخاب های کاربر هست ؟ چون دقت کرده باشید سفارش بدید یه لیستی میاد که نوع سفارش و تعدادش رو تو فاکتور میزنه

    0
    ۱۲, مرداد , ۱۳۹۶ در ۱۰:۳۵ ب.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    امکانش هست سورس رو خدمتتون ارسال کنم ؟ تغییرات رو اگه لطف کنید اعمال کنید چون واقعا زیاد سر در نمیارم و واقعا هم سه روزه وقتمو گرفته اگه هزینه هم داره بفرمایید تقدیم کنم چون دقیقا تو همین یک مورد گیر کردم

    0
    ۱۳, مرداد , ۱۳۹۶ در ۱۲:۵۶ ب.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    ممنون از اینکه به سوالاتم جوابگو بودید ولی متاسفانه نتونستم ست کنم با وجود اینکه نمونه هم دادید ولی جواب نداد.

ارسال نظر