我正在尝试使用Recycler View从Fire Base数据库检索数据,但是却出现了错误

时间:2019-12-05 06:48:47

标签: java android android-recyclerview

我正在尝试创建一个群组活动,在该活动中可以显示用户连接到的所有群组。我已经创建了小组活动,并在其中插入了回收站视图,并试图从数据库中检索数据,但是不幸的是,我遇到了错误。我已经尽力解决了所有问题,但仍然遇到了错误。

  

目前,我遇到此错误..发现两个吸气剂或   属性的区分大小写冲突:groupprofilename。

如果您不介意,请帮助我,以便我完成活动。

下面的代码是用户可以创建组的代码。

 private void groupmethos(final String groupname) {
    DatabaseReference groupref = rootref.child("Group").push();
    final String grouppushid = groupref.getKey();
    Map groupmap = new HashMap<>();
    groupmap.put("GroupprofileName",groupname);
    groupmap.put("Creater",currentUser.getUid());
    groupmap.put("StatusGroup","");
    groupmap.put("profileimage","");
    groupmap.put("id",grouppushid);
    rootref.child("Group").child(grouppushid).updateChildren(groupmap).addOnCompleteListener(new OnCompleteListener() {
        @Override
        public void onComplete(@NonNull Task task) {
            rootref.child("GroupMessage").child(grouppushid).setValue("").addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()){
                        rootref.child("userconnectedtogroup").child(currentUser.getUid()).child(grouppushid).setValue("Added").addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                Toast.makeText(MainActivity.this,groupname + "group Created successfully",Toast.LENGTH_SHORT).show();
                            }
                        });

                    }
                }
            });

        }
    });
}
在上述代码中,

用户请求创建一个组。 下面给出的是使用getter和setter从数据库中获取数据的代码。

package com.nanb.alpha;

public class modelclass {
    public String GroupprofileName,StatusGroup,profileimage;

    public modelclass() {
    }

    public modelclass(String groupprofileName, String statusGroup, String profileimage) {
        this.GroupprofileName = groupprofileName;
        this.StatusGroup = statusGroup;
        this.profileimage = profileimage;
    }

    public String getGroupprofileName() {
        return GroupprofileName;
    }

    public void setGroupprofileName(String groupprofileName) {
        GroupprofileName = groupprofileName;
    }

    public String getStatusGroup() {
        return StatusGroup;
    }

    public void setStatusGroup(String statusGroup) {
        StatusGroup = statusGroup;
    }

    public String getProfileimage() {
        return profileimage;
    }

    public void setProfileimage(String profileimage) {
        this.profileimage = profileimage;
    }
}

给定代码是recyclerview用来将值设置为给定布局的代码。

public class group extends AppCompatActivity {

private RecyclerView recyclerView;
private DatabaseReference conref,groupref;
private FirebaseAuth mAuth;
private String Currentuserid;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_group);

    intialiation();
    mAuth = FirebaseAuth.getInstance();
    Currentuserid = mAuth.getCurrentUser().getUid();
    conref = FirebaseDatabase.getInstance().getReference().child("userconnectedtogroup").child(Currentuserid);
    groupref = FirebaseDatabase.getInstance().getReference().child("Group");
}

private void intialiation() {
    recyclerView = findViewById(R.id.recyclerview);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
}

@Override
protected void onStart() {
    super.onStart();
    FirebaseRecyclerOptions option = new FirebaseRecyclerOptions.Builder<modelclass>().setQuery(conref,modelclass.class).build();

    FirebaseRecyclerAdapter<modelclass,group_viewHolder> adapter = new FirebaseRecyclerAdapter<modelclass, group_viewHolder>(option) {
        @Override
        protected void onBindViewHolder(@NonNull final group_viewHolder group_viewHolder, int i, @NonNull modelclass modelclass) {
            String userid = getRef(i).getKey();
            groupref.child(userid).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                  if(dataSnapshot.hasChild("profileimage")){
                      String profileimage = dataSnapshot.child("profileimage").getValue().toString();
                      String groupname = dataSnapshot.child("GroupprofileName").getValue().toString();
                      String groupStatus = dataSnapshot.child("StatusGroup").getValue().toString();

                      group_viewHolder.groupname.setText(groupname);
                      group_viewHolder.groupStatus.setText(groupStatus);
                      Picasso.get().load(profileimage).into(group_viewHolder.profileimage);
                  }else{
                      String groupname = dataSnapshot.child("GroupprofileName").getValue().toString();
                      String groupStatus = dataSnapshot.child("StatusGroup").getValue().toString();

                      group_viewHolder.groupname.setText(groupname);
                      group_viewHolder.groupStatus.setText(groupStatus);
                      Picasso.get().load(R.mipmap.groupicon).into(group_viewHolder.profileimage);
                  }
                }

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

                }
            });
        }

        @NonNull
        @Override
        public group_viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
           View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.grouplayout,parent,false);
           group_viewHolder groupholder = new group_viewHolder(view);
            return groupholder;
        }
    };
    recyclerView.setAdapter(adapter);
    adapter.startListening();
}

public static class group_viewHolder extends RecyclerView.ViewHolder{
    TextView groupname,groupStatus;
    CircleImageView profileimage;
    public group_viewHolder(@NonNull View itemView) {
        super(itemView);
        groupname = itemView.findViewById(R.id.Group_name);
        groupStatus = itemView.findViewById(R.id.Group_Status);
        profileimage = itemView.findViewById(R.id.group_profile_dp);
    }
}
}

2 个答案:

答案 0 :(得分:0)

由于您已经使用了getter / setter和构造函数,因此将模型属性访问修饰符从public更改为private

private String GroupprofileName,StatusGroup,profileimage;

建议:您应该严格遵循命名约定来编写代码,以获得更好的可读性可理解性。选中here

答案 1 :(得分:-1)

在模型类.java中初始化此变量

  public String GroupprofileName;

         (change to)

  public String groupprofileName;

因为可变前缀字母应该是小写字母