0

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

Antwort

0

fand ich die Antwort. Es war nur ein dummer Fehler. Item Klasse ist eigentlich das Modell. Also habe ich es in meinen Modellnamen CategoryInformation umbenannt, und es wurde behoben!

@Override 
public CategoryInformation getItem(int pos) { 
    return super.getItem(getCount() - 1 - pos); 
} 
Verwandte Themen