PDA

View Full Version : استفاده از lazy loading در لیست ویو



zikimiki
یک شنبه 04 آبان 1393, 14:55 عصر
با سلام خدمت دوستان و اساتید.

دوستان ، کد و یا اموزشی رو که بتونه به ادم کمک کنه تا از lazy loading ( اضافه شدن اتوماتیک مطالب به لیست ویو پس از پیمایش صفحه )در لیست ویو استفاده کنیم سراغ دارند؟ متاسفانه کن خیلی گشتم ولی مطلبی پیدا نکرم :(

storm_saeed
یک شنبه 04 آبان 1393, 17:57 عصر
کافیه اینترفیس onScrollListener رو به لیست ویو تون اضافه کنید اینم از کد

public class LazyLoad implements AbsListView.OnScrollListener {
private int currentFirstVisibleItem;
private int currentVisibleItemCount;
private int currentScrollState;
private int totalItemCount;
private int lastItem = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
this.currentScrollState = scrollState;
this.isScrollAtBottom();
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
this.currentFirstVisibleItem = firstVisibleItem;
this.currentVisibleItemCount = visibleItemCount;
this.totalItemCount = totalItemCount;


}
private void isScrollAtBottom() {
if (this.currentVisibleItemCount > 0 &&
this.currentScrollState == SCROLL_STATE_IDLE &&
this.currentFirstVisibleItem + this.currentVisibleItemCount != lastItem &&
this.currentVisibleItemCount + this.currentFirstVisibleItem == this.totalItemCount &&){
//...
//ADD to LisView
//..
lastItem = this.currentFirstVisibleItem + this.currentVisibleItemCount;
}

}


این موقعی که به ته لیست کاربر برسه isScrollAtBottom صدا زده میشه و الان میتونید اونجایی که کامنت کذاشتم به لیست ویوتون هرچی میوخواین اضافه کنید

zikimiki
یک شنبه 04 آبان 1393, 22:57 عصر
کافیه اینترفیس onScrollListener رو به لیست ویو تون اضافه کنید اینم از کد

public class LazyLoad implements AbsListView.OnScrollListener {
private int currentFirstVisibleItem;
private int currentVisibleItemCount;
private int currentScrollState;
private int totalItemCount;
private int lastItem = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
this.currentScrollState = scrollState;
this.isScrollAtBottom();
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
this.currentFirstVisibleItem = firstVisibleItem;
this.currentVisibleItemCount = visibleItemCount;
this.totalItemCount = totalItemCount;


}
private void isScrollAtBottom() {
if (this.currentVisibleItemCount > 0 &&
this.currentScrollState == SCROLL_STATE_IDLE &&
this.currentFirstVisibleItem + this.currentVisibleItemCount != lastItem &&
this.currentVisibleItemCount + this.currentFirstVisibleItem == this.totalItemCount &&){
//...
//ADD to LisView
//..
lastItem = this.currentFirstVisibleItem + this.currentVisibleItemCount;
}

}


این موقعی که به ته لیست کاربر برسه isScrollAtBottom صدا زده میشه و الان میتونید اونجایی که کامنت کذاشتم به لیست ویوتون هرچی میوخواین اضافه کنید

متاسفانه در پیاده سازیش با مشکل برخورد کردم و ارور میده !

http://www.8pic.ir/images/1dyqosn76ia8dc6fd8xm.png

storm_saeed
یک شنبه 04 آبان 1393, 23:24 عصر
بهتره این کلاس رو بصورت inner کلاس تعریف نکنید و یه کلاس دیگه به اسم lazyload درست کنید و اینها رو توش بزارید
و در لیست ویوتون این کار رو بکنید
listview.setOnScrollListener(new lazyload())
و یه راه دیگشم اینه اینهارو تو کلاس اداپتر بنویسید تو اونجایی که برای Listview تون اداپتر تعریف کردین ( کلاس اداپتر منظورمه) بعد از extends BaseAdapter این رو هم بزنید implements AbsListView.OnScrollListener

saeid222
سه شنبه 06 آبان 1393, 22:15 عصر
سلام
آقا سعید منم از کد شما استفاده کردم ولی هنوزم همه ی لیست همون اول که activity اجرا مییشه , لود میشه.
واقعا ممنون میشم یه sample برامون بگذارید .:خجالت:

saeid222
جمعه 23 آبان 1393, 12:18 عصر
آقا سعید سلام
من لیستم رو با customAdaptor پر میکنم آیا بازم میشه اون رو Lazy صدازد

tux-world
جمعه 23 آبان 1393, 20:40 عصر
بلی میشه مشکلی نداره همون متد رو داخل اون آداپتر پیاده سازی کنید. راحته :قهقهه: