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

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

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

سلام و عرض خسته نباشید خدمت دوستان عزیز ،

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

برای مثال هنگام ارتباط با سرور و دریافت اطلاعات از دیتابیس ، برای بار اول درخواست دریافت 20 آیتم به سرور ارسال شود ، و برای زمانی که اسکرول شد و به آخرین آیتم لیست رسید درخواست برای 20 آیتم دیگر ارسال شود...

چه راه حلی پیشنهاد می کنید ؟!

با تشکر :*

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
مسعود فرمانی  10 سال پیش
+3 0

برای اینکه متوجه بشی کاربر تا انتهای لیست 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 تغییر کنه//
}
}
}
});
0 0
ممنون ، فقط این رو توی همون کلاس adapter که از یک Arrayadapter اکستند میشه بزارم ؟ مشکلی نیست ؟ :* (10 سال پیش)
+1 0
نه،این کدها رو در ActivityMain که ListView رو تعریف کردید کپی کنید و نام لیت ویو خودتون رو در خط فراخوانی متد onScrollListener و قسمت case در بلوک سswitch قرار بدید... (10 سال پیش)
0 0
حله ؛ ممنون (10 سال پیش)

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