此代码在从Firebase数据库中提取数据时出错 在线
name="ABCD" connectionString="Data Source=DELL27\SQLSERVER2014;Initial Catalog=TMLS;User ID=saver;Password=Abc123" providerName="System.Data.SqlClient"
com.google.firebase.database.DatabaseException:找到两个对属性具有冲突区分大小写的getter或字段:user_name
UsersForChat usersForChat = dataSnapshot.getValue(UsersForChat.class);
这是Pojo Class UsersForChat
public class Users_Display_For_Chat_Activity extends AppCompatActivity {
FirebaseAuth firebaseAuth;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
ArrayList<UsersForChat> users = new ArrayList<UsersForChat>();
RecyclerView recyclerView;
UsersDispalyActivtyRecyclerViewAdapter rvadapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat_);
firebaseAuth = FirebaseAuth.getInstance();
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference();
rvadapter = new UsersDispalyActivtyRecyclerViewAdapter(this,users);
recyclerView = (RecyclerView) findViewById(R.id.rv_UsersForChat);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(rvadapter);
retrivedata();
}
public void retrivedata()
{
databaseReference.child("Users").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
UsersForChat usersForChat = dataSnapshot.getValue(UsersForChat.class);
users.add(usersForChat);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
答案 0 :(得分:1)
如果您处于项目的开头且可以进行数据库更改,我建议您根据Java Naming Convention更改所有字段名称,设置者和getter小写。
此外,您需要将所有字段的展示次数从default access
更改为private access
,如下所示:
private String userName, userPhoneNo, userProfilePicUrl;
这样的制定者和吸气者:
public void setUserEmail(String userEmail) {this.userEmail = userEmail;}
public String getUserEmail() {return userEmail;}
public String getUserPhoneNo() {return userPhoneNo;}
public void setUserPhoneNo(String userPhoneNo) {this.userPhoneNo = userPhoneNo;}
public String getUserProfilePicUrl() {return userProfilePicUrl;}
public void setUserProfilePicUrl(String userProfilePicUrl) {this.userProfilePicUrl = userProfilePicUrl;}
正如您可能看到的那样,只有setter和getter才有public access
。
如果您无法更改数据库中字段的名称,则只需更改文件的可见性即可。
答案 1 :(得分:0)
当您制作POJO时,通常会将所有字段设为私有,以便仅通过getter和setter强制访问。
private String User_Name,User_PhoneNo,User_Profile_Pic_Url;
此外,传统上,您不会在方法名称和成员中使用下划线,只需使用驼峰。但我认为这取决于你。