2017-06-30 3 views
2

ich eine recyclerView implementieren müssen, dass meine Fragen auf Parse zeigt, also habe ich es getan:Wie ein verzögertes Laden recyclerView Adapter wie Reich recyclerView Adapter implementieren mit Kotlin

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); 
      } 
     } 
    } 
} 

und es funktioniert gut. Aber vor ein paar Monaten habe ich Realm RecyclerView Adapter verwendet, der ohne Paginierung funktioniert (und es funktioniert sehr gut, weil ich 50k Elemente anzeigen muss) und ich möchte einen Adapter wie diesen machen. Ich habe verwenden Kotlin auch, und ich habe das Konzept eines faulen Variable gesehen:

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

aber ich weiß nicht, wie es zu benutzen Adapter aus diesem Grunde zu machen: wenn ich jetzt eine Abfrage tun, um zu analysieren, es ist so etwas wie diese:

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) } } 

und wie es funktioniert, wenn ich einen faulen Ansatz verwenden? Ich muss alle Artikel herunterladen oder ich muss auch paginieren?

Vielen Dank für Ihre Hilfe.

+0

Was genau wollen Sie faul für verwenden? – chandil03

+0

@ chandil03 wartet auf die Liste , die von Parse eintrifft, könnten sie 100/1000 etc. sein – ste9206

+0

Lazy-Funktion wird für diesen Fall nicht verwendet. Lazy-Funktionen werden verwendet, wenn Sie die Ressource beim ersten Methodenaufruf und nicht bei der Initialisierung der Variablen laden möchten. – chandil03

Antwort

0

Ich habe Realm RecyclerView Adapter verwendet, der ohne Paginierung funktioniert (und es funktioniert sehr gut, weil ich 50k Elemente zeigen muss), und ich möchte einen Adapter wie folgt machen.

Eigentlich ist dies die Magie von Realm, nicht der Adapter. Und Sie können nicht den gleichen Geschmack bekommen, weil Realms Lazy-Loading-Architektur super schnell sein wird als andere wie serverseitige Paginierung. Tut mir leid, du kannst es nicht nachahmen.

Ich muss alle Elemente herunterladen oder ich muss auch paginieren?

Wenn die serverseitige Datenquelle kann nicht der Lage Paginierung Anfrage zu bearbeiten, müssen Sie zunächst alle Elemente laden, fragen sie dann auf Client-Seite und lassen Sie die Show-Adapter Artikel auf recyclerview

, wie es funktioniert wenn ich einen faulen Ansatz verwende?

Was ich verstehe davon ist, dass Sie Kotlins faulen und Paginierung kombinieren möchten?

Bereits ein Adapter benötigt einen Datensatz (möglicherweise Elemente von 10 bis 20 aus einer Datenquelle), um bei Bedarf anzuzeigen. Also kann ich keinen sinnvollen Gebrauch für Kotlins Faulen sehen.

Verwandte Themen