View Full Version : استفاده از lazy loading در لیست ویو
  
zikimiki
یک شنبه 04 آبان 1393, 15:55 عصر
با سلام خدمت دوستان و اساتید.
دوستان ، کد و یا اموزشی رو که بتونه به ادم کمک کنه تا از lazy loading ( اضافه شدن اتوماتیک مطالب به لیست ویو پس از پیمایش صفحه )در لیست ویو استفاده کنیم سراغ دارند؟ متاسفانه کن خیلی گشتم ولی مطلبی پیدا نکرم :(
storm_saeed
یک شنبه 04 آبان 1393, 18: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, 23: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
دوشنبه 05 آبان 1393, 00:24 صبح
بهتره این کلاس رو بصورت inner کلاس تعریف نکنید و یه کلاس دیگه به اسم lazyload درست کنید و اینها رو توش بزارید
و در لیست ویوتون این کار رو بکنید
listview.setOnScrollListener(new lazyload())
و یه راه دیگشم اینه اینهارو تو کلاس اداپتر بنویسید  تو اونجایی که برای Listview تون اداپتر تعریف کردین ( کلاس اداپتر منظورمه) بعد از extends BaseAdapter این رو هم بزنید implements AbsListView.OnScrollListener
saeid222
سه شنبه 06 آبان 1393, 23:15 عصر
سلام 
آقا سعید منم از کد شما استفاده کردم ولی هنوزم همه ی لیست همون اول که activity اجرا مییشه , لود میشه.
واقعا ممنون میشم یه sample  برامون بگذارید .:خجالت:
saeid222
جمعه 23 آبان 1393, 13:18 عصر
آقا سعید سلام 
من لیستم رو با customAdaptor پر میکنم آیا بازم میشه اون رو Lazy  صدازد
tux-world
جمعه 23 آبان 1393, 21:40 عصر
بلی میشه مشکلی نداره همون متد رو داخل اون آداپتر پیاده سازی کنید. راحته :قهقهه:
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.