【问题标题】:Display specific data from firebase inside Recycler view在 Recycler 视图中显示来自 firebase 的特定数据
【发布时间】:2018-03-20 20:48:31
【问题描述】:

我的一项活动中有一个选项卡布局。不同的标签扩展了不同的片段。我必须在 cardView inside fragment 中显示数据。 CardView 将包含 Bills 中单个孩子的所有数据。

这是我的活动

这就是我的数据库的样子:

现在的问题不是在 Bills 节点内显示所有子节点的数据,而是需要用两件事 1 过滤它们。用户 ID2。帐单类型。现在如果 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 应该包含最后一张卡片。我需要在此代码中进行哪些更改。 提前致谢。任何帮助表示赞赏。

【问题讨论】:

标签: android firebase android-recyclerview android-cardview


【解决方案1】:

您需要过滤您的账单节点,这可以通过 .equalto 轻松完成

在数据库参考的 Firebase 回收器视图中:

if( userid.equalto(mUser.getUid())){
mRef.orderbychild("billtype").equalto("Electronics")//whatever Category of fragment
else{(adapter.getposition(position).getKey()).orderbychild("billType")}

您可以通过说出您需要显示的任何类别来过滤而不是使用 mRef 作为您的数据库引用(注意:这仅适用于您在每个片段中复制代码的情况)

 mRef.orderbychild("billtype").equalto("Electronics")

现在,另一方面,当用户标识不匹配时,则根据账单类型显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 2021-11-22
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多