2016-03-28 14 views
0

Ich Wana erstellen mobile Anwendung, die RecyclerView mit Seitennummerierung verwendet, die jedes Mal aus dataBase 10 Elemente lädt, dann wenn die Liste die Unterseite ich 10 andere Elemente laden, so habe ich diese Methode verwendet, um benachrichtigt zu werden, wenn ich erreicht Ende der Liste:RecyclerView notifyDataSetChanged IllegalStateException

public boolean reachedEndOfList(int position) { 
     // can check if close or exactly at the end 
     return position == getItemCount() - 1; 
    } 

und ich diese Funktion Artikel laden:

@Override 
    public void onBindViewHolder(Info holder, int position, List<Object> payloads) { 
     if (reachedEndOfList(position)) { 
      Log.d("reachedEnd", "true"); 
      this.autoCompletesTmp = getTmp(); 
      notifyDataSetChanged(); 
     } 
    } 

getTmp() die Liste der Elemente mit weiteren 10 Artikel aktualisieren, aber ich bekomme diese Ausnahme, wenn ich das erreicht Ende der Liste:

java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling 
+2

Warum rufst du 'notifyDataSetChanged' auf' onBindViewHolder'? – royB

+0

weil ich dort die Position des View Items kennen konnte und meine Methode "beactedEndOfList (int position)" aufrufen konnte, um zu wissen, ob ich das Ende der Liste erreicht habe – S4M37

+0

erkläre dies: this.autoCompletesTmp = getTmp(); – Dexter

Antwort

0

hatte ich das gleiche Problem vor einer Weile: Dies trug dazu bei:

Handler handler = new Handler(); 
       final Runnable r = new Runnable() { 
        public void run() { 

         //Do something like notifyDataSetChanged() 
        } 
       }; 

       handler.post(r); 
Verwandte Themen