从android studio 2.3.3中的github导入时出错

时间:2017-08-28 07:18:31

标签: android firebase firebase-realtime-database android-recyclerview

我根据从Firebase实时数据库获取的数据在回收站视图中列出了此人的姓名。

当用户点击每个人的姓名时,如何显示此人的详细信息?

以给定图像格式存储的每个人的描述:

enter image description here

1 个答案:

答案 0 :(得分:0)

由于可能有许多同名用户,我建议您按ID获取用户的详细信息。可能是您可以将您的用户ID存储在隐藏的某个视图中。

您可以按照以下步骤按ID获取用户的详细信息。

  1. 根据Firebase数据库中的用户字段创建一个类。

    public class UserDetail {
        private String uId;
        private String name;
        private String phoneNo;
        private String address;
        private String product;
        private String spinner;
        private String quantity;
    
        // Empty constructor
        // Getters and setters
    }
    
  2. 创建与上述类对应的DAO类,以从数据库中获取记录。

    public class UserDetailDao {
    
        private final FirebaseDatabase mDatabase;
    
        public UserDetailDao() {
            mDatabase = FirebaseDatabase.getInstance();
        }
        public void getUserById(String id, OnResultFetched onResultFetched) {
            final UserDetail userDetail = null;
    
            mDatabase.getReference()
                    .child("users")
                    .child(id)
                    .addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            userDetail = dataSnapshot.getValue(UserDetail.class);
                            onResultFetched.onResult(userDetail);
                        }
    
                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                            onResultFetched.onResult(null);
                        }
                    });
        } 
    
        // Callback interface 
         public interface OnResultFetched {
             public void onResult(UserDetail userDetail);
         }
    }
    
  3. 现在,您可以通过以下任何活动获取所有用户的列表:

     new UserDetailDao().getUserById(id_of_your_user, new UserDetailDao.OnResultFetched() {
                @Override
                public void onResult(UserDetail userDetail) {
    
                    // **** HERE IS YOUR USER ****
    
                }
            });