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

مشاهده loading در listview هنگام دریافت از json از سرور

hamed8080  10 سال پیش  10 سال پیش
0 0

سلام دوستان .

من قسمت lazyloading محمد حسین رو که تو سایت گذاشته پیاده کردم تا وقتی کاربر اسکرول کرد 10 تا 10 تا از سرور بخونه و تو آرایه قرار بده اما مشکلم اینه که موقع اسکرول کلا برنامه قفل میکنه که خیلی ضایعس .

من روی این موضوع یه هفته خودم وقت گذاشتم اما نتیجه نگرفتم .

من میخوام وقتی کاربر داره لیست ویویی که شامل عکس هم هست رو اسکرول میکنه هنگامی که خواست به پایین بیاد و به سرور درخواست بفرسته که لیست رو دریافت کنه یه loading نمایش داده بشه و بعد از دریافت و آپدیت شدن listview به صورت خودکار loading محو بشه . من loading رو خودم هنگام دریافت تونستم بیارم اما چون رو thraed اصلی اجرا میشه اول برنامه قفل میکنه بعد loading سریع میاد و میره . گاه بخوام یه ترد دیگه درست کنم اون موقع loading اصلا محو نمیشه .

         lstContent.setOnScrollListener(new OnScrollListener() {

            @Override
            public void onScrollStateChanged(AbsListView arg0, int arg1) {

            }


            @Override
            public void onScroll(AbsListView arg0, int firstItemVisible, int CountVisible, int totalCount) {

                final int lastItem = firstItemVisible + CountVisible;
                if (adapter.getCount() >= 10 && lastItem > adapter.getCount() - 3) {

                   
                    isloading = false;
                    if ( !isloading) {
                        if (lastItem > lastItemPosition) {
                            lastItemPosition = adapter.getCount();
                              showLoadingDialog();اگه اینجا یه ترد درست کنم دیگه loading محو نمیشه 
                   
                            readData();
                            adapter.notifyDataSetChanged();
                        }
                    }
                    isloading = true;

                }

            }

        });

 

+1 0
از AsyncTask استفاده کن (10 سال پیش)
0 0
رفتم سراغش اما خدایی نفهمیدم میتونی خودت یه کمکی بکنی همینجا یه نمونه برام درست کنی . بچه ها هم استفاده می کنن دمت گرم (10 سال پیش)
+2 0
از ماژول وب سرویس استاد استفاده کن ، یه پروگرس بار داخل صفحه بنداز و GONE کن و موقعی که درخواست زدی به وب سرویس زدی پروگرس بار رو VISIBALE کن بعد که وب سرویس کارش تموم شد داخل Listener مربوط به وب سرویس دوباره پروگرس بار رو GONE کن. (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
hamed8080  10 سال پیش
0 0

محمد جان کاشکی خودت اینم انجام میدادی . من موندم شما که همه رو نوشتی این لودینگ رو هم مینوشتی دیگه .شوخی کردم دستت درد نکنه ولی اگه نتونستم میام سراغت .من آموزش های سایت خودت رو هم دنبال میکنم اما واقعا جای خالی asynctask و recycleview واقعا حس میشه این دو تا رو درست کنی باید طلا بگیرنت .

+2 0
asynctask یک کلاس هست که از ترد گرفته شده دققا همون چیزی که استاد نوشته رو میتونید خودتون تبدیل به یک asyncktask بکنید ، درواقع کلاس استاد در سطح پایین تری از کد قرار داره و انعطاف پذیر در هست ولی asyctask یک لول بالاتر هست و انعطاف پذیریش کمتر منظور از سطح نزدیکی به کلاس ترد اصلی هست . recyclerView هم یک ویو هست شبیه به لیست ویو و هیچ الزامی به استفاده از این ویو به جای ListView نیست ، البته از نظر پرفرمنس بهتر شده ولی تاثیر چندانی نداره . (10 سال پیش)
پاسخ به سوال 
hamed8080  10 سال پیش
0 0

بعد از یه هفته عذاب بالاخره درست شد . حتماً باید تو سایت میگفتم تا 1 ساعت بعدش درستش کنم .با asynctask درستش کردم فقط یه مشکلی که الان داره اینه که کاربر میتونه با لمس صفحه پروگرس بار رو به حالت مخفی ببره و دیتا دیگه از اینترنت دریافت نمیشه . باید یه کاری کنم اون موقع نتونه تاچ کنه .

+2 0
از دایلوگ استفاده کنید و پروگرس بار رو داخلش قرار بدید و به دایلوگ بگید که cancelable(false) (10 سال پیش)
0 0
اینم درست کردم الان . فقط یه سوال آیا میشه progressDialog رو بهش بگیم کجای صفحه قرار بگیره ؟ یا اینکه بگیم نمای ظاهریش چه شکلی باشه ؟ (10 سال پیش)
+1 0
آموزش استاد رو مطالعه کنید کاملا توضیح دادند . (10 سال پیش)

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