Ich arbeite an Q/A App. Ich habe erfolgreich Fragen von Firebase geladen. Aber ich kann keine Seitenumbrüche aus der Firebase-ähnlichen Datenbank anwenden. Und wie erkennt man, dass wir das Ende der Recycleransicht erreicht haben, damit die nächsten paar Fragen geladen werden können.Seitennummerierung in endloser Recycler-Ansicht mit Firebase
Antwort
erkennen, dass wir Ende RecyclerView
erreicht haben Sie diese Klasse EndlessRecyclerOnScrollListener.java
laden mehr nächste Frage verwenden können, sollten Sie in Question class
wie Anzahl
public class Question {
private int number; // it must unique and auto increase when you add new question
...
}
Dann ein weiteres Feld definieren, wenn Sie laden Fragen von FireBase
können Sie wie
public class MainActivity extends AppCompatActivity {
private static final int TOTAL_ITEM_EACH_LOAD = 10;
private DatabaseReference mDatabase;
final List<Question> questionList = new ArrayList<>();
private int currentPage = 0;
private RecyclerView recyclerView;
private RecyclerViewAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// init and set layout manager for your RecyclerView
...
mAdapter = new RecyclerViewAdapter(questionList);
recyclerView.setAdapter(mAdapter);
recyclerView.setOnScrollListener(new EndlessRecyclerOnScrollListener(mLayoutManager) {
@Override
public void onLoadMore(int current_page) { // when we have reached end of RecyclerView this event fired
loadMoreData();
}
});
loadData(); // load data here for first time launch app
}
private void loadData() {
// example
// at first load : currentPage = 0 -> we startAt(0 * 10 = 0)
// at second load (first loadmore) : currentPage = 1 -> we startAt(1 * 10 = 10)
mDatabase.child("questions")
.limitToFirst(TOTAL_ITEM_EACH_LOAD)
.startAt(currentPage*TOTAL_ITEM_EACH_LOAD)
.orderByChild("number")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!dataSnapshot.hasChildren()){
Toast.makeText(MainActivity.this, "No more questions", Toast.LENGTH_SHORT).show();
currentPage--;
}
for (DataSnapshot data : dataSnapshot.getChildren()) {
Question question = data.getValue(Question.class);
questionList.add(question);
mAdapter.notifyDataSetChanged();
}
}
@Override public void onCancelled(DatabaseError databaseError) {}});
}
private void loadMoreData(){
currentPage++;
loadData();
}
}
tun
Was ist die minimale API-Ebene, die von Ihrer Klasse unterstützt wird? –
@RishabhMaurya von Level 1 –
Ok, ich werde das implementieren und dann Sie benachrichtigen. –
Sie können Firebase Queries auf Ihre FirebaseRecyclerAdapter
erstellen, mit startAt
und limitToFirst
Aufzeichnungen in Chargen zum Download bereit.
Die Seitengröße limitToFirst
würde um und Ereignis wie ein Klick oder pull to refresh erhöht werden.
Ich möchte die Recyclerview Fortschrittsbalken anzeigen, wenn der nächste Satz von festen Artikel von Firebase geladen wird. –
Sie können das 'SwipeRefreshLayout' mit' setRefreshing' aufrufen/schließen. –
Um zu überprüfen, ob Sie den unteren Rand des RecyclerView erreicht haben, können Sie den onScrolled Listener wie unten verwenden. Die if-Bedingung ist hier wichtig und definiert, wann ein Benutzer den unteren Rand erreicht hat.
mRV.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
mTotalItemCount = mLayoutManager.getItemCount();
mLastVisibleItemPosition = mLayoutManager.findLastVisibleItemPosition();
if (!mIsLoading && mTotalItemCount <= (mLastVisibleItemPosition + mPostsPerPage)) {
getUsers(mAdapter.getLastItemId());
mIsLoading = true;
}
}
});
Zweitens können Sie startAt
und limitToFirst
Methoden verwenden, um Fragen in Chargen zu erhalten, wie unten dargestellt:
query = FirebaseDatabase.getInstance().getReference()
.child(Consts.FIREBASE_DATABASE_LOCATION_USERS)
.orderByKey()
.startAt(nodeId)
.limitToFirst(mPostsPerPage);
ich eine Open-Source-App erstellt haben, die genau zeigt, wie es gemacht wird. Bitte schauen Sie: https://blog.shajeelafzal.com/2017/12/13/firebase-realtime-database-pagination-guide-using-recyclerview/
- 1. Seitennummerierung/unendliche Schriftrolle mit Firebase
- 2. endloser Marquee
- 3. Horizontale Recycleransicht mit verblassenden Kanten
- 4. Codeigniter Seitennummerierung mit Datamodell
- 5. Seitennummerierung mit dynamischem Inhalt
- 6. Seitennummerierung mit Live-Suche
- 7. Seitennummerierung mit mittleren Seitenzahlen
- 8. Seitennummerierung mit Apache Derby
- 9. Seitennummerierung mit vielen Seiten
- 10. Seitennummerierung mit MongoDB
- 11. Anzeigen in Recycleransicht ersetzen Artikel
- 12. Seitennummerierung in Clojure
- 13. Seitennummerierung in web2py
- 14. Java - Wie man XML mit endloser rekursiver Struktur analysiert?
- 15. HashTable mit endloser Tiefe. Warum? Wie vermeide ich?
- 16. Seitennummerierung in Codeigniter 3
- 17. Seitennummerierung in einem Bericht
- 18. Seitennummerierung in CouchDB?
- 19. Seitennummerierung in GWT
- 20. Zurück zur Seitennummerierung Zurück zur vorherigen Seitennummerierung
- 21. Seitennummerierung mit Blog/index.html in Jekyll-3.2.1
- 22. CacheResponseMixin funktioniert nicht mit Seitennummerierung
- 23. Seitennummerierung mit Codeigniter-URI-Ausgabe
- 24. Snappy & wkhtmltopdf: Seitennummerierung in Fußzeile
- 25. Seitennummerierung und Tabellensortierung in Rails
- 26. Aktualisieren von Daten in einer Recycleransicht
- 27. Seitennummerierung funktioniert nicht in Laravel5.2
- 28. Verwendung der Seitennummerierung in Codeigniter
- 29. In Datentabelle mehr als 10 Datensätze zeigen Seitennummerierung, sonst nicht Anzeige der Seitennummerierung mit Daten
- 30. Seitennummerierung einer Suchmaschine
Können Sie Ihren Code für Adapter veröffentlichen. –