آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

اسپینر در ادپتر لیست ویو (حل شد)

علی  9 سال پیش  9 سال پیش
+1 0

سلام دوستان :

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

این اسپینر کارش اینه  کلیک بشه و یه عددی انتخاب بشه آپدیت بشه سمت سرور.

دفعه اول که دیتا لود میشه چون onSelectListener تعریف کرده بودم برای اسپینر یه بار عمل آپدیت انجام می شد بدون اینکه من سلکت کنم. برای همین یه دونه onTouchListener هم تعریف کردم که این اتفاق نیوفته.

حالا دیتا بیاد مثلا ۶ تا ایتم در لیست ویو. تا روی اسپینر سلکت نکنم و آپدیت نشه همه چی خوبه. ولی بیام رو یکی از اسپینرها تاچ کنم و آپدیت انجام شه و بخوام اسکرول کنم بین آیتم های لیست ویو این عمل آپدیت اجرا میشه با هر بار اسکرول.

چه کار کنم درست بشه ؟ onClickListenr هم نداره اسپینر که نخوام تاچ کنم. :(

 
   //change item in Spinner
      spinnerCount.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {


          spinnerCount.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) {

              count = Integer.parseInt(spinnerCount.getSelectedItem().toString());

              //update counter in Spinner
              pd = ProgressDialog.show(AdapterShoppingBag, null, "لطفا صبر کنید...");
              Thread thread = new Thread(new Runnable() {
                Handler handler = new Handler() {
                  @Override
                  public void handleMessage(Message msg) {
                    pd.dismiss();

                    switch (res) {
                      case "OkUpdateCount":

                        res = "";

                        break;
                      case "NoUpdateCount":

                        Toast.makeText(AdapterShoppingBag, "خطا در بروزرسانی تعداد محصول", Toast.LENGTH_SHORT).show();

                        res = "";
                        break;
                      default:

                        Toast.makeText(G.context, "خطا در انجام عملیات", Toast.LENGTH_SHORT).show();

                        break;
                    }
                    super.handleMessage(msg);

                  }
                };

                @Override
                public void run() {
                  try {

                    Message msg = new Message();

                    CartHelper.updateCount(item.id, count ,G.sp.getString("mobilee", ""));

                    handler.sendMessage(msg);

                  } catch (Exception e) {
                    Log.e("LOG", e.getMessage());
                  }
                }

              });

              thread.start();

            }

            @Override
            public void onNothingSelected(AdapterView<?> parentView) {

            }

          });

          return false;
        }
      });
0 0
و آیا میشه اسپینری که در ادپتر تعریف شده رو داخل اکتیویتی لیست ویو تعریف کرد یا استاندارد نیست؟ (9 سال پیش)
0 0
خب دوست من گمونم شما رویداد Selectرو روی یک الوار ست کردید که با اسکرول اون الوار تو کل لیست ویو آپدیت میشه درسته ؟ این کد ها رو داخل متد fill نوشتی؟ کجا هست من زیاد سر در نیاوردم (9 سال پیش)
0 0
بله درسته در متد fill نوشتم . بایستی در متد getView باشه تا اینجوری نشه؟ (9 سال پیش)
0 0
خب دوست عزیز تو باید از پارامتر Item متد fill استفاده کنی گمونم اشکال کارت از همین باشه (9 سال پیش)
0 0
یعنی دقیقا چکار کنم امکانش هست واضح تر بگید دوست گرامی؟ (9 سال پیش)
0 0
خب دوست عزیز من از کلاس هات و شی هایی که تعریف کردی اطلاعی ندارم ولی این که میگی بقیه آپدیت میشن احتما خیلی زیاد مربوط میشه به اینکه شما به جای اینکه هر آیتم از لیست ویو رو پر کنی داری به کل اون الوار اشاره میکنی مثلا داخل پروژه note ما یک کلاس Structnote داشتیم گمونم که داخل متد fill یک شی از اون ساخته میشد حالا شما هم تو پروژتون همین شی رو دارین باید این شی رو تغییر بدین نه کل الوار منتسب به اون شی رو که به صورت لحةه ای هست :) (9 سال پیش)
0 0
من نفهمیدم منظورتون رو. من الان در لیست ۶ تا آیتم دارم . اگر آیتم ۶ رو بیام اسپنرشو تغییر بدم و اسکرول کنم برم بالا و دوباره اسکرول کنم بیام به آیتم ۶ دوباره این اسپینر عمل آپدیدت انجام میشه . (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
علی  9 سال پیش
0 0

خوب مشکلم با این کد حل شد وقتی که دیتا لودش تموم میشه باید این رو ست می کردم ! 

 spinnerCount.setOnItemSelectedListener(null);
0 0
باز یه مشکل دیگه دارم . مثلا ۴تا آیتم در لیست ویو دارم اسپینر اولی عدد ‍۱ هست و می کنم ۲ .اسکرول می کنم میرم پایین بعد دوباره میام بالا می بینم شده همون ۱ . این لیست ویو چرا اینقدر اذیت می کنه :( (9 سال پیش)
+1 0
دوست عزیز پیشنهاد میکنم یکبار دیگه اموزش استاد رو ببینی با همین چالشی که گفتی مواجه میشه و حلش میکنه استاد لیست ویو رو هم قشنگ هضم میکنید :) (9 سال پیش)
0 0
بله ممنون آموزش رو دوباره دیدم و مشکل حل شد. (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .