【发布时间】:2018-03-20 20:48:31
【问题描述】:
我的一项活动中有一个选项卡布局。不同的标签扩展了不同的片段。我必须在 cardView inside fragment 中显示数据。 CardView 将包含 Bills 中单个孩子的所有数据。
这是我的活动
现在的问题不是在 Bills 节点内显示所有子节点的数据,而是需要用两件事 1 过滤它们。用户 ID 和 2。帐单类型。现在如果 userId 与当前用户的唯一键 mUser.getUid() 匹配,那么它应该检查 billType 假设,如果 billType 是电子产品,那么它应该在电子标签中可见。
这是我的 viewElectronics.java 片段视图的代码
public class viewElectronics extends Fragment {
private RecyclerView mReceipt;
private FirebaseAuth mAuth;
private FirebaseUser mUser;
private DatabaseReference mRef;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.electronics_layout, container, false);
mAuth = FirebaseAuth.getInstance();
mUser = mAuth.getCurrentUser();
mRef = FirebaseDatabase.getInstance().getReference().child("Bills");
mReceipt = (RecyclerView) rootView.findViewById(R.id.electronicsRecycler);
mReceipt.setLayoutManager(new LinearLayoutManager(getContext()));
FirebaseRecyclerAdapter<DataModel, ReceiptViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<DataModel, ReceiptViewHolder>
(DataModel.class, R.layout.reciept_row, ReceiptViewHolder.class, mRef){
@Override
protected void populateViewHolder(ReceiptViewHolder viewHolder, DataModel model, int position) {
viewHolder.setBillNo("Bill No : " + model.getBillNo());
viewHolder.setStoreName("Store Name : " + model.getCompany());
viewHolder.setDate("Date : " + model.getDate());
viewHolder.setTime("Time : " + model.getTime());
viewHolder.setBillTotal("Total : " + model.getTotal());
}
};
mReceipt.setAdapter(firebaseRecyclerAdapter);
return rootView;
}
}
假设只有最后一个节点有 billType: Electronics,那么 Electronics Tab 应该包含最后一张卡片。我需要在此代码中进行哪些更改。 提前致谢。任何帮助表示赞赏。
【问题讨论】:
-
如果您不介意使用 REST api 来填充您的 rv,那么您可以使用带有“按键过滤”的查询。 firebase.google.com/docs/database/rest/retrieve-data
标签: android firebase android-recyclerview android-cardview