نوشتن رویداد برای رسیدن به انتهای لیست ویو
سلام و عرض خسته نباشید خدمت دوستان عزیز ،
لیست ویوی من دقیقا همانند آموزش استاد می باشد . می خوام برای زمانی که آیتم های لیست به پایان رسیدن یک رویداد بنویسم...
برای مثال هنگام ارتباط با سرور و دریافت اطلاعات از دیتابیس ، برای بار اول درخواست دریافت 20 آیتم به سرور ارسال شود ، و برای زمانی که اسکرول شد و به آخرین آیتم لیست رسید درخواست برای 20 آیتم دیگر ارسال شود...
چه راه حلی پیشنهاد می کنید ؟!
با تشکر :*
برای اینکه متوجه بشی کاربر تا انتهای لیست Scroll کرده میتونی اینترفیس onScrollListener رو implement کنی (هم میتونی از anonymous class استفاده کنی هم کلاسی معمولی) و به عنوان آرگومان به متد listView.setOnScrollListener(); ارسال کنی...برای مثال من با چاپ یه Toast ساده رسیدن کاربر به انتهای لیست رو اعلان کردم شما میتونید دستورات دیگه (مثلا درخواست برای آیتم های بعدی...) رو به جای اون کد بزنید..موفق باشید
lstContent.setOnScrollListener(new AbsListView.OnScrollListener() {//اسم لیست ویوی من lstContent هست//
private int preLast = 0;
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {//نیازی به implement کردن این متد نداری//
}
@Override
public void onScroll(AbsListView listView, final int firstVisibleItem,
final int visibleItemCount, final int totalItemCount) {
switch(listView.getId()) {
case R.id.lstContent:
//اینجا محاسباتی برای فهمیدن اینکه آخرین آیتم موجود در لیست قابل مشاده هست
final int lastItem = firstVisibleItem + visibleItemCount;
if(lastItem == totalItemCount) {
if(preLast!=lastItem){ //برای جلوگیری از اجرای چند باره دستورات اگر کابر چندین بار لیست رو بالا پایین کرد//
Toast.makeText(getApplicationContext(),"list ends",Toast.LENGTH_SHORT).show();
preLast = lastItem;
}//دستورات بلوک if فقط یکبار اجرا میشن مگه اینکه آیتم های جدید به لیست اضافه کنی و مقدار totalItemCount تغییر کنه//
}
}
}
});
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .