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