如何使用 Android firebase-realtime-database 中的 CardView 在 RecyclerView 中显示数据?

马穆杜拉

我已经实现了它并且它运行成功。问题是,我在 Firebase 的每个唯一键下都有 3 个以上的项目。但它只显示添加到 Firebase 的最后一个项目。

这是下面的代码。提前致谢 :)

mAuth = FirebaseAuth.getInstance();
currentUserId = mAuth.getCurrentUser().getUid();
database = FirebaseDatabase.getInstance();
rootRef = database.getReference("rootDataRef");
ex_childRef = rootRef.child("ExchangeItemsData");
exrecyclerView = view.findViewById(R.id.exchangeRecyclerVeiwId);

GridLayoutManager glm = new GridLayoutManager(getContext(), 2);
    exrecyclerView.setLayoutManager(glm);
    fab = view.findViewById(R.id.load_exchange_fab_addId);
    fabMenu = view.findViewById(R.id.load_exchange_menuId);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AddExchangeItemFragment exFrag = new AddExchangeItemFragment();
            FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction()
                    .replace(R.id.exchange_fragment_holderId, exFrag, "exc");
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();
            fabMenu.setVisibility(View.GONE);
        }
    });
    return view;
}

@Override
public void onStart() {
    super.onStart();
    FirebaseRecyclerOptions<ImportExchangeItemModel> exoptions =
            new FirebaseRecyclerOptions.Builder<ImportExchangeItemModel>()
                    .setQuery(ex_childRef, ImportExchangeItemModel.class)
                    .build();
    FirebaseRecyclerAdapter<ImportExchangeItemModel, ExchangeItemViewHolder> exadapter
            = new FirebaseRecyclerAdapter<ImportExchangeItemModel, ExchangeItemViewHolder>(exoptions) {
        @NonNull
        @Override
        public ExchangeItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View v=LayoutInflater.from(parent.getContext()).inflate(R.layout.exchange_single_row,parent,false);
            ExchangeItemViewHolder holder=new ExchangeItemViewHolder(v);
            return holder;
        }

        @Override
        protected void onBindViewHolder(@NonNull final ExchangeItemViewHolder holder, final int position, @NonNull ImportExchangeItemModel model) {

            final String userIds = getRef(position).getKey();
             ex_childRef.addListenerForSingleValueEvent(new ValueEventListener() {
                 @Override
                 public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                     for (DataSnapshot dSnapshot:dataSnapshot.getChildren()){
                         for (DataSnapshot ds:dSnapshot.getChildren()){
                             final String exitemName=ds.child("exchangeProductName").getValue().toString();
                             final String exitemDesc =ds.child("productDesc").getValue().toString();
                             final String exitemImg =ds.child("imageUrl").getValue().toString();
                             holder.exItemName.setText(exitemName);
                             holder.exItemDesciption.setText(exitemDesc);
                             Picasso.get().load(exitemImg).into(holder.exItemImage);
                             holder.itemView.setOnClickListener(new View.OnClickListener() {
                                 @Override
                                 public void onClick(View v) {
                                     ExchangeItemsFragment fragment=new ExchangeItemsFragment();
                                     Bundle argss=new Bundle();
                                     argss.putString("exdataRoot",userIds);
                                     fragment.setArguments(argss);
                                     FragmentManager fragmentManager=getActivity().getSupportFragmentManager();
                                     FragmentTransaction transaction=fragmentManager.beginTransaction();
                                     transaction.replace(R.id.exchange_fragment_holderId,fragment,"exdetails");
                                     transaction.addToBackStack(null);
                                     transaction.commit();
                                 }
                             });
                         }
                     }
                 }

                 @Override
                 public void onCancelled(@NonNull DatabaseError databaseError) {

                 }
             });
        }
    };




    exrecyclerView.setAdapter(exadapter);
    exadapter.startListening();
}
public static class ExchangeItemViewHolder extends RecyclerView.ViewHolder{
    TextView exItemName,exItemDesciption;
    ImageView exItemImage;

    public ExchangeItemViewHolder(View itemView) {
        super(itemView);
        exItemName=itemView.findViewById(R.id.exchangeitemNameIdTV);
        exItemDesciption=itemView.findViewById(R.id.exchangeitemDescriptionCardViewId);
        exItemImage=itemView.findViewById(R.id.exchangeItemImageCardId);
    }
}

}

这是 firebase-database JSON 格式

"ExchangeItemsData" : {
  "lhmuj6n3g6Su1rv7XJLq5tV62yr2" : {
    "-LQQ7scByWcswW2VIPM5" : {
      "exchangeProductName" : "fsfsdfs",
      "imageUrl" : "https://firebasestorage.googleapis.com/v0/b/binimoy-97025.appspot.com/o/ExchangeImages%2F2c2a91c8-0f3e-46ee-afd2-41141ee3c42b?alt=media&token=e8599f5c-b91c-415a-8e79-fcac737a4f9f",
      "phoneNo" : 5465464,
      "productDesc" : "fsdf",
      "productName" : "sdfsfds",
      "userID" : "lhmuj6n3g6Su1rv7XJLq5tV62yr2"
    },
    "-LQSjH-LB4ud-i6M2ZMa" : {
      "exchangeProductName" : "jgjhgjhg",
      "imageUrl" : "https://firebasestorage.googleapis.com/v0/b/binimoy-97025.appspot.com/o/ExchangeImages%2F4da464a7-142b-4bf1-b92c-9852fc38878a?alt=media&token=105d17e7-87c4-45a2-92a6-7f74afaca145",
      "phoneNo" : 524343,
      "productDesc" : "gdfytfhg",
      "productName" : "hgfhfhg",
      "userID" : "lhmuj6n3g6Su1rv7XJLq5tV62yr2"
    },
    "-LQTBpwWcA2OycVgCyIR" : {
      "exchangeProductName" : "dasdsad",
      "imageUrl" : "https://firebasestorage.googleapis.com/v0/b/binimoy-97025.appspot.com/o/ExchangeImages%2F82118232-89d8-47d0-8e60-57481eba67bd?alt=media&token=bf372222-dc97-43bf-9e86-058174bc2c71",
      "phoneNo" : 654654,
      "productDesc" : "asdasd",
      "productName" : "aasdasd",
      "userID" : "lhmuj6n3g6Su1rv7XJLq5tV62yr2"
    },
    "-LQTMxhmgbvRHzyPqRK2" : {
      "exchangeProductName" : "fsdfs",
      "imageUrl" : "https://firebasestorage.googleapis.com/v0/b/binimoy-97025.appspot.com/o/ExchangeImages%2F96769920-279b-47a2-a6fc-adb23ebae5fa?alt=media&token=609e396a-dcd6-493e-ae64-5871318d5f6f",
      "phoneNo" : 546546,
      "productDesc" : "sfdsdf",
      "productName" : "fsdfsf",
      "userID" : "lhmuj6n3g6Su1rv7XJLq5tV62yr2"
    }
  }
},

基于火的数据库图像

帮帮我。谢谢你。

亚历克斯·马莫

您没有得到任何东西,RecyclerView因为您将一个FirebaseRecyclerOptions对象传递给包含错误查询的适配器。您缺少一个孩子,即用户 ID。为了解决这个问题,请更改以下代码行:

ex_childRef = rootRef.child("ExchangeItemsData");

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
ex_childRef = rootRef.child("ExchangeItemsData").child(uid);

你的问题将得到解决。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用cardview在recyclerview中显示json数据

来自分类Dev

Android在RecyclerView中显示从json到cardview的数据

来自分类Dev

如何在RecyclerView CardView Android中获取商品信息

来自分类Dev

使用 Fragments 在 recyclerView 中的 android 自定义 cardview

来自分类Dev

如何从Realtime Database Firebase中的条件节点获取元素

来自分类Dev

如何从 Firebase 数据库过滤数据并将其显示到 android recyclerview 中?

来自分类Dev

RecyclerView中的多个CardView

来自分类Dev

CardView在RecyclerView中对齐

来自分类Dev

如何缩小 RecyclerView 中 CardView 之间的空间?

来自分类Dev

如何在 RecyclerView 中动态添加 CardView?

来自分类Dev

使用CardView的RecyclerView中的setLayoutManager NullPointException

来自分类Dev

使用 RecyclerView 在 CardView 中实现 WebView

来自分类Dev

如何从android中的json获取数据并在RecyclerView中显示?

来自分类Dev

Firebase中的数据未在RecyclerView中显示

来自分类常见问题

如何在Android中取消Firebase Realtime数据库正在进行的写入或删除操作

来自分类Dev

如何在 swift 4.0 中获取 firebase-realtime-database 中的特定值

来自分类Dev

圆角cardView在RecyclerView中不起作用-Android吗?

来自分类Dev

FloatingActionButton与RecyclerView中的CardView重叠

来自分类Dev

在Firebase Realtime Database Javascript中获取所有密钥

来自分类Dev

在Flutter中查找n个最近的位置:结合Cloud Firestore与Firebase Realtime Database结合使用的本地数据库(Sqlite)

来自分类Dev

如何在recyclerView中总结cardView项目值并在recyclerView外的textView上显示总和

来自分类Dev

如何在RecyclerView中创建不同的CardView布局

来自分类Dev

为使用recyclerView填充的cardView中的按钮添加clickListner

来自分类Dev

如何使用 firebase 数据获取 recyclerView 中的项目数?

来自分类Dev

如何在cardView android中添加listView?

来自分类Dev

如何在Android中获取CardView大小?

来自分类Dev

如何在cardView android中添加listView?

来自分类Dev

在Realtime Database Android Studio Java中更改值

来自分类Dev

如何在特定Cardview的项目点击中访问recyclerview中的所有cardview

Related 相关文章

  1. 1

    使用cardview在recyclerview中显示json数据

  2. 2

    Android在RecyclerView中显示从json到cardview的数据

  3. 3

    如何在RecyclerView CardView Android中获取商品信息

  4. 4

    使用 Fragments 在 recyclerView 中的 android 自定义 cardview

  5. 5

    如何从Realtime Database Firebase中的条件节点获取元素

  6. 6

    如何从 Firebase 数据库过滤数据并将其显示到 android recyclerview 中?

  7. 7

    RecyclerView中的多个CardView

  8. 8

    CardView在RecyclerView中对齐

  9. 9

    如何缩小 RecyclerView 中 CardView 之间的空间?

  10. 10

    如何在 RecyclerView 中动态添加 CardView?

  11. 11

    使用CardView的RecyclerView中的setLayoutManager NullPointException

  12. 12

    使用 RecyclerView 在 CardView 中实现 WebView

  13. 13

    如何从android中的json获取数据并在RecyclerView中显示?

  14. 14

    Firebase中的数据未在RecyclerView中显示

  15. 15

    如何在Android中取消Firebase Realtime数据库正在进行的写入或删除操作

  16. 16

    如何在 swift 4.0 中获取 firebase-realtime-database 中的特定值

  17. 17

    圆角cardView在RecyclerView中不起作用-Android吗?

  18. 18

    FloatingActionButton与RecyclerView中的CardView重叠

  19. 19

    在Firebase Realtime Database Javascript中获取所有密钥

  20. 20

    在Flutter中查找n个最近的位置:结合Cloud Firestore与Firebase Realtime Database结合使用的本地数据库(Sqlite)

  21. 21

    如何在recyclerView中总结cardView项目值并在recyclerView外的textView上显示总和

  22. 22

    如何在RecyclerView中创建不同的CardView布局

  23. 23

    为使用recyclerView填充的cardView中的按钮添加clickListner

  24. 24

    如何使用 firebase 数据获取 recyclerView 中的项目数?

  25. 25

    如何在cardView android中添加listView?

  26. 26

    如何在Android中获取CardView大小?

  27. 27

    如何在cardView android中添加listView?

  28. 28

    在Realtime Database Android Studio Java中更改值

  29. 29

    如何在特定Cardview的项目点击中访问recyclerview中的所有cardview

热门标签

归档