آموزش RecyclerView بی پایان + ProgressBar در برنامه نویسی اندروید
سلام دوستان امیدوارم حالتان خوب باشد در این سری از آموزش برنامه نویسی اندروید به آموزش RecyclerView بی پایان + ProgressBar در برنامه نویسی اندروید می پردازیم قبلتر آموزش RecyclerView بی پایان یا endless قرار داده بودیم ولی امروز کمی آن را تغییر دادیم تا بیشتر کاربردی شود. در ادامه می توانید پیش نمایشی از آن را مشاهده کنید با ما همراه باشید .
باید یکسری کتاب خانه را به پروژه اضافه کنید.
وارد فایل Build.gradle از نوع Module شده سپس در بخش dependencies خط های زیر را اضافه کنید.
پروژه را sync کنید.
یک فایل در layout خود به نام item_recycler_view_row.xml ایجاد کرده و کدهای زیر را در آن قرار دهید.
کد شکل ظاهری آیتم ها را تنظیم می کند (یعنی آیتم ها به این شکل خواهند بود).
خب باید یک فایل به نام item_loading.xml ایجاد کنیم و کدهای زیر را در آن قرار دهیم.
در بالا یک layout قرار گرفته است که در آن یک progressbar قرار گرفته است در زیر آخرین cardview ما inflate می شود و داده های جدید لود می شوند.
در activity_main.xml که layout اصلی ما است کدهای زیر را قرار دهید.
در بالا RecyclerView برای Render کردن آیتم ها استفاده می شود.
خب باید یک کلاس به نام Contact.java ایجاد کرده و کد های زیر را در آن قرار دهید.
کد بالا به getter و setter معروف است.
یک Interface به نام OnLoadMoreListener ایجاد کرده و کدهای زیر را در آن قرار دهید.
یک کلاس جاوا به نام ContactAdapter.java ایجاد کرده و کدهای زیر را در آن قرار دهید.
کد بالا بعد از گرفتن داده ها آنها را در RecyclerView قرار می دهد و load more را نمایش می دهد.
حالا وارد فایل MainActivity.java شده و کدهای زیر را قرار دهید.
در بالا یکسری داده sample ابتدا لود شده سپس بعد از اینکه scroll کنید یک ProgresBar نمایش داده می شود و دوباره یکسری داده sample لود می شود.
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
سلام ممنون از آموزش خوبتون
بی زحمت میشه رویداد onclick رو توی adapter براش بنویسید
با تشکر
سلام مهندس خسته نباشید این آموزش بسیار عالی است ولی بنده فکر میکنم سرعت لود ردیف های جدید کم است و طول میکشد راهی ندارد سریعتر شود ؟
سلام و درود
مقدار 5000 رو کمتر کنید تا سرعت لود افزایش پیدا کند. (در بخش postdelay)
موفق باشید.
سلام ممنون از راهنمایی تون یک مشکل دارم که رویداد setOnClickListener برای هر ردیف مشکل دارد و برنامه فورکلوز میدهد و بسته میشود اگه لطف کنید این رویداد را اضافه کنید ممنون میشم با تشکر از شما .
سلام و درود
از آموزش زیر استفاده کنید.
https://programchi.ir/2017/08/03/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%d8%b1%d9%88%db%8c%d8%af%d8%a7%d8%af-%da%a9%d9%84%db%8c%da%a9-%d8%af%d8%b1-recyclerview/
موفق و موید باشید.
سلام
من ی سوال داشتم ، اگه کمکم کنید خیلی ممنون میشم.
من برای این آموزش در بخش row یک checkbox قرار دادم ، تا بتونم آیتم های که نمایش داده شده را یکی یکی به دلخواه انتخاب کنم ، اما بعد انتخاب رندم هر کدوم ، 10 تا ایتم بعدی و 10 تا آیتم قبلی آن هم انتخاب میشه ، یعنی اگر 40 آیتم داشته باشیم ، با انتخاب هر کدوم ، 3 تای دیگه هم فعال می شه ، چکار کنم این اتفاق نیافته؟
ممنون میشم ، من هر لحظه سر می زنم و منتظر پاسخ شما هستم.
با احترام
سلام
رویداد مربوط به checkbox را در چه بخشی تعریف کردید ؟
سلام و درود بی پایان
item_recycler_view_row.xml
در لایوت بالا تعریف کرده ام
سلام ممنون از آموزش خوبتون
من طبق آموزش پیش رفتم و یک فرگمنت ساختم و از Endless RecyclerView توش استفاده کردم جواب گرفتم همه چی درست بود ، اما جای دیگه که تب ساختم توی فرگمنت های تب لایوت وقتی استفاده کردم جای اینکه یک Progressbar نشون داده بشه گاهی 2 تا نشون داده میشه !!
اسکرین شات برنامه : https://drive.google.com/file/d/1rQXqgVRMl-xEjilbdq40TAEHpyDt16H4/view
سلام و درود
به احتمال زیاد شما به ازای هر بخش یک progressbar در نظر گرفتید که اشتباه است باید یک progressbar داشته باشید.
موفق باشید.
سلام دوباره
من یک فرگمنت دارم که در تب لایوت گفتم به تعداد تب هام از این فرگمنت ساخته بشه و داده ها رو از اکتیویتی به هر فرگمنت پاس دادم و تو ریسایکلر نشون میدم ، حالا طبق آموزش من فقط یک progressbar تعریف کردم ولی همونطور که تو اسکرین شاتم نشون دادم ولی چندین بار نشون میده و گاهی داده های بعدی که نشون داده میشن تو ریسایکلر پراگرس بار محو نمیشه و میمونه. ممنون میشم راهنماییم کنید.
سلام. خیلی ممنونم بابت آموزش خوبتون.
من میخوام از این آموزش EndLessRecyclerView داخل رتروفیت استفاده کنم و داده های جدید رو از سمت سرور بگیرم. من آداپتور ریسایکلرویو رو مثل شما پیاده سازی کردم. فقط مشکلم در متود زیر هست و نمیدونم چه تغییراتی باید بدم تا بتونم با رتروفیت ازش استفاده کنم.contactAdapter.setOnLoadMoreListener
منون میشم راهنمایی کنید.
سلام
ممنون بایت آموزشتون .
اگه ی لیست بلند 400 آیتم داشته باشیم چطور میشه مثلا 20 تا 20 لودش کنم؟
هر بار که پروگرس میاد 20 30 تا از لیست رو ادد کنه.
ن اینکه اطلاعات جدید لود شه.
ممنون میشم اگه راهنمایی کنید.
سلام و درود
ممنون بابت آموزش تون
اگه یک لیست بلند 400 آیتمی داشته باشیم چطور میشه که هر بار که پروگرس میاد 20 30 تا از لیستم رو لود کنه ؟
ممنون میشم راهنمایی کنید.