Ich lade Daten aus der Firebase-Datenbank mithilfe von FirebaseRecyclerAdapter ab. Ich verwende ein GridLayout, um die Daten anzuzeigen. Meine Daten werden in der Firebase-Datenbank mit push() -Tasten sortiert, und ich möchte diese Daten in umgekehrter Reihenfolge abrufen. Ich habe versucht,So implementieren Sie die Methode "override" getItem() in FirebaseRecyclerAdapter korrekt
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
mit Leider ist setStackFromEnd()
nicht für Gridlayout unterstützt. Ohne setStackFromEnd()
kehrt setReverseLayout()
die Datenreihenfolge um, aber oben bleibt eine Lücke, die nicht akzeptabel ist.
Allerdings habe ich this Antwort
@Override
public Item getItem(int pos) {
return super.getItem(getCount() - 1 - pos);
}
aus einer anderen Frage (was meiner Meinung nach funktionieren kann) und haben versucht zu implementieren gefunden. Ich erhalte jedoch einen Fehler: 'kann das Symbol Element nicht' auflösen 'und' versucht, inkompatiblen Rückgabetyp für getItem (int) 'zu verwenden.
Um ehrlich zu sein, ich weiß nicht, wie man die getItem()
implementieren. Wenn jemand weiß, wie das zu lösen ist, bitte helfen Sie! Danke im Voraus!
Ziel:, um den getItem() - Code zu implementieren, um die aus der Firebase-Datenbank abgerufenen push() -Daten problemlos umzukehren (ohne Lücken am Anfang). Angenommen, der Code von der Verbindung funktioniert.
Code:
public class Browse extends Fragment {
private FirebaseRecyclerAdapter<CategoryInformation, CategoryHolder> mFirebaseAdapter;
private GridLayoutManager mLayoutManager;
private RecyclerView rv;
private DatabaseReference mDatabase;
public Browse() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_browse, container, false);
rv = rootView.findViewById(R.id.rv_recycler_view_browse);
mLayoutManager = new GridLayoutManager(getContext(), 2);
rv.setLayoutManager(mLayoutManager);
mDatabase = FirebaseDatabase.getInstance().getReference().child("new");
return rootView;
}
@Override
public void onStart() {
super.onStart();
mFirebaseAdapter = new FirebaseRecyclerAdapter<CategoryInformation, CategoryHolder>(
CategoryInformation.class,
R.layout.card_item_browse,
CategoryHolder.class,
mDatabase) {
@Override
public Item getItem(int pos) {
return super.getItem(getCount() - 1 - pos);
}
@Override
public void populateViewHolder(CategoryHolder holder, CategoryInformation chat, final int position) {
Picasso.with(getContext()).load(chat.getImage()).into(holder.feed_image);
holder.rating.setText(chat.getRating());
}
};
rv.setAdapter(mFirebaseAdapter);
}
//ViewHolder for our Firebase UI
public static class CategoryHolder extends RecyclerView.ViewHolder{
ImageView feed_image;
TextView rating;
View mView;
public CategoryHolder(View v) {
super(v);
feed_image = v.findViewById(R.id.feed_image);
rating = v.findViewById(R.id.rating);
mView = v;
}
}
}