2017-06-30 144 views
2

我需要實現一個recyclerView顯示我的查詢上解析實現懶加載recyclerView適配器一樣的境界recyclerView適配器,所以我已經做到了:如何使用科特林

private class Pagination extends RecyclerView.OnScrollListener{ 

    @Override 
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
     super.onScrolled(recyclerView, dx, dy); 

     visibleItemCount = manager.getChildCount(); 
     totalItemCount = manager.getItemCount(); 
     firstVisibleItemPosition = manager.findFirstVisibleItemPosition(); 


     if (!isLoading && !isLastPage) { 
      if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount 
        && firstVisibleItemPosition >= 0 
        && totalItemCount >= PAGINATION) { 
       isLoading = true; 

       new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         loadData(); 
        } 
       }, 2000); 
      } 
     } 
    } 
} 

,而且運作良好。但是幾個月前,我使用了無分頁工作的realm recyclerView適配器(並且它工作得非常好,因爲我有50k個項目可以顯示),我想製作一個這樣的適配器。我也用科特林,我已經看到了懶惰變量的概念:

val lazyValue: String by lazy { 
println("computed!") 
"Hello" 
} 

,但我不知道如何使用它,以使適配器出於這個原因:現在,當我做一個查詢解析它是這樣的:

val dishes = ParseQuery.getQuery<ParseObject>("Books").setSkip(index).setLimit(pagination) 

dishes.findInBackground { objects, e -> e?.let { listener?.onPaginationError(e.message) } ?:run { createNewDish(objects,listener,false) } } 

它是如何工作的,當我使用懶惰的方法?我需要下載所有項目,或者我還需要分頁?

謝謝你的幫助。

+0

你到底想用什麼懶? – chandil03

+0

@ chandil03等待從Parse到達的列表,它們可能是100/1000等 – ste9206

+0

這種情況下不使用懶惰函數。當您希望在第一次方法調用時加載資源時,會使用懶惰函數,而不是初始化變量。 – chandil03

回答

0

我已經使用realm recyclerView適配器,沒有分頁工作(它工作得很好,因爲我有50k項目顯示),我想做一個這樣的適配器。

其實這是魔界的魔法,不是它的適配器。而你無法獲得相同的品味,因爲Realm的懶惰加載架構將比其他服務器端分頁更快。對不起,你不能模仿它。

我需要下載所有項目或我還需要分頁?

如果服務器端的數據源着能夠處理分頁的要求,你必須先裝入所有項目,然後查詢它的客戶端,讓上recyclerview適配器顯示項目

它是如何工作當我使用懶惰的方法?

我明白的是,你想結合kotlin的懶惰和分頁?

已經有一個適配器需要一個數據集(可能來自數據源的10到20項)在需要時顯示。所以我看不到任何適合kotlin懶惰的用法。