0

FirebaseRecyclerAdapterを使用してfirebaseデータベースからデータを取得しています。私はGridLayoutを使ってデータを表示しています。私のデータはfirebaseデータベースのpush()キーで順序付けされています。これらのデータを逆の順序で取得したいと思います。私は残念ながら、setStackFromEnd()はGridLayoutのためにサポートされていませんFirebaseRecyclerAdapterでoverride getItem()メソッドを正しく実装する方法

mLayoutManager.setReverseLayout(true); 
mLayoutManager.setStackFromEnd(true); 

使用して試してみました。 setStackFromEnd()を指定しないと、setReverseLayout()はデータの順序を逆にしますが、一番上にギャップを残しますが、これは受け入れられません。

しかし、私は(私が働くかもしれないと思う)とそれを実装しようとした別の質問からthis答え

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

発見しました。しかし、「çannot解決シンボルアイテム」と「はgetItem(int)に互換性のない戻り値タイプを使用しようとしています。

正直言って、getItem()の実装方法はわかりません。誰かがこれを解決する方法を知っていれば助けてください!前もって感謝します!

目標:(上部に隙間なく)滑らかfirebaseデータベースから検索プッシュ()データを反転しようとしてのgetItem()コードを実装します。リンクのコードが動作していると仮定します。

コード:

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

答えて

0

私は答えを見つけました。それはちょっとばかげた過ちだった。 Itemクラスは実際にモデルです。だから私はそれを私のモデル名CategoryInformationに改名し、修正されました!

@Override 
public CategoryInformation getItem(int pos) { 
    return super.getItem(getCount() - 1 - pos); 
} 
関連する問題