Ich bin Bulding-App, die Krypto Währungen überwacht, ich benutze Firebase UI, und alles hat gut funktioniert, bis ich versuchte, den Adapter zu aktualisieren (Firebase unterstützt Clientseite Filtering) und ich bin Hinzufügen der "Suche" -Funktion. Ich erhalte den aktualisierten Wert, aber meine Daten werden unter die vorherigen RecyclerView-Auflistungen verschoben (welche wird unsichtbar, nimmt aber Platz). Ich denke, ich vermisse eine Art "Clear Recyclerview" -Funktion. BTW. Ich benutze das in Fragment. Bitte helfen Sie.Aktualisieren Firebase RecyclerviewAdapter löscht keine vorherige Liste
Vielen Dank im Voraus.
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu,menu);
MenuItem item = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView)item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
Log.i(TAG,newText);
Query ref1 = FirebaseRef.getDatabase().child("Coins");
mAdapter = new FirebaseRecyclerAdapter<Coins, CoinsViewHolder>(Coins.class, R.layout.coins_card, CoinsViewHolder.class,
ref1.orderByChild("short").startAt(newText).endAt("~").limitToFirst(3)) {
@Override
public void populateViewHolder(CoinsViewHolder coinsViewHolder, Coins coinsData, int position) {
if(coinsData.getName() != null){
coinsViewHolder.setmNameTextView(coinsData.getName());
}
if(coinsData.getPrice() != null) {
coinsViewHolder.setmPriceTextView(coinsData.getPrice());
} else if(coinsData.getCap24hrChange() != null){
coinsViewHolder.setmPercentChangeTextView(coinsData.getCap24hrChange());}
coinsViewHolder.bind(coinsData);
}
};
mRecyclerView.addItemDecoration(new MaterialViewPagerHeaderDecorator());
mRecyclerView.setAdapter(mAdapter);
MaterialViewPagerHelper.registerRecyclerView(getActivity(), mRecyclerView);
return true;
}
});
super.onCreateOptionsMenu(menu,inflater);
}
danke für die schnelle Antwort, aber könnten Sie teilen, wie Sie die Abfrage von der onCreateOptionsMenu aktualisieren, während es in OnCreate ist? :) –
Das Problem ist, dass Sie in Ihrem Anwendungsfall nicht direkt den Recycler-Adapter FirebaseUI verwenden können, da Sie Ihre Abfrage kontinuierlich ändern müssen, müssen Sie Ihren eigenen Recycler-Adapter verwenden. Der UI-Adapter ist gut für Anwendungsfälle wie Chat-App, wo die Änderungen in der Recycler –
Ich erstellte öffentlichen ref-Instanz erstellt und Adapter auf OnCreate verschoben, aber wenn ich ref1 ändern Wert Adapter wird nicht geändert. Also sollte ich wirklich aufhören, Firebases Adapter zu benutzen? :/ –