【发布时间】:2023-04-05 03:11:01
【问题描述】:
我正在使用 FirebaseRecyclerAdapter 从 firebase 数据库中检索数据。我正在使用 GridLayout 来显示数据。我的数据按 firebase 数据库中的 push() 键排序,我想以相反的顺序检索这些数据。我试过使用
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
很遗憾,GridLayout 不支持setStackFromEnd()。如果没有setStackFromEnd(),setReverseLayout() 会颠倒数据顺序,但会在顶部留下空隙,这是不可接受的。
不过,我找到了this的答案
@Override
public Item getItem(int pos) {
return super.getItem(getCount() - 1 - pos);
}
来自另一个问题(我认为可能有效)并已尝试实施它。但是,我收到一个错误:“cannot resolve symbol Item”和“attempting to use in compatible return type for getItem(int)”。
说实话我不知道如何实现getItem()。如果有人知道如何解决这个问题,请帮忙!提前致谢!
目标: 实现 getItem() 代码,以尝试顺利地反转从 firebase 数据库检索到的 push() 数据(顶部没有任何间隙)。假设链接中的代码有效。
代码:
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;
}
}
}
【问题讨论】:
标签: android firebase-realtime-database grid-layout android-recyclerview firebaseui