Java 无二传手/吸气手火力基地
大家好,我有一个问题。我想从Firebase live数据库检索数据,它一直告诉我它找不到getter和setter,但正如您在下面看到的那样,我这样做了,我创建了一个类,其中setter和getter具有相同的数据库字段名称 谁能告诉我我做错了什么,因为我一点都不知道 先谢谢你 数据库照片: 活动和类的代码,您可以在其中看到getter和setterJava 无二传手/吸气手火力基地,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,大家好,我有一个问题。我想从Firebase live数据库检索数据,它一直告诉我它找不到getter和setter,但正如您在下面看到的那样,我这样做了,我创建了一个类,其中setter和getter具有相同的数据库字段名称 谁能告诉我我做错了什么,因为我一点都不知道 先谢谢你 数据库照片: 活动和类的代码,您可以在其中看到getter和setter package com.example.ipill; public class CartActivity extends AppCompat
package com.example.ipill;
public class CartActivity extends AppCompatActivity {
private TextView total;
private ImageButton removeFromCart;
private Button pay;
private RecyclerView mResultList;
private DatabaseReference mUserDatabase;
public static int cart_count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
mUserDatabase = FirebaseDatabase.getInstance().getReference("Cart");
total = findViewById(R.id.TotalPrice);
removeFromCart = findViewById(R.id.removeFromCart);
mResultList = findViewById(R.id.cartList);
pay = findViewById(R.id.pay);
mResultList.setHasFixedSize(true);
mResultList.setLayoutManager(new LinearLayoutManager(this));
// Attach a listener to read the data at our posts reference
mUserDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Users_get post = dataSnapshot.getValue(Users_get.class);
System.out.println("DATAAAA: "+post);
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
}
@Override
protected void onStart() {
super.onStart();
invalidateOptionsMenu();
}
// View Holder Class
public static class UsersViewHolder extends RecyclerView.ViewHolder {
View mView;
String nome;
String surname;
Long prezzo;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void getDetails(String name,String cognome,Long price){
nome=name;
surname=cognome;
prezzo=price;
}
public void setDetails(String name, String surname, Long price) {
TextView user_name = (TextView) mView.findViewById(R.id.name_text);
TextView user_surname = (TextView)mView.findViewById(R.id.status_text);
TextView user_price = (TextView)mView.findViewById(R.id.price);
user_name.setText(name);
user_surname.setText(surname);
user_price.setText(Long.toString(price));
}
}
}
阶级
public class Users_get {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Long getPrice() {
return price;
}
public void setPrice(Long price) {
this.price = price;
}
private String name, surname;
private Long price;
}
JSON结构
{
"Cart": {
"-M0U3UXq2ZA00Jq5o9as": {
"name": "Alex",
"price": 120,
"surname": "Kyto"
},
"-M0WlUbQHj1hdH40uWVF": {
"name": "Alex",
"price": 120,
"surname": "Kyto"
},
"-M0WxZhI98Xb1s9Xy5HV": {
"name": "Alex",
"price": 120,
"surname": "Kyto"
},
"-M0X00Zr64RocyQHhoFB": {
"name": "Alex",
"price": 120,
"surname": "Kyto"
}
},
"Users": {
"01": {
"Name": "Alex",
"Price": 120,
"Surname": "Kyto"
},
"02": {
"Name": "Alex",
"Price": 200,
"Surname": "Pablo"
}
}
}
将类更改为:
public class Users_get {
private String name, surname;
private Long price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Long getPrice() {
return price;
}
public void setPrice(Long price) {
this.price = price;
}
public Users_get(String name,Long price,String surname) {
this.price = price;
this.name = name;
this.surname = surname;
}
public Users_get() {
}
因为您使用的是IDE,所以只需单击generate Getter and Setter,它就会自动为您执行该操作,而不是手动编写方法。将类更改为:
public class Users_get {
private String name, surname;
private Long price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Long getPrice() {
return price;
}
public void setPrice(Long price) {
this.price = price;
}
public Users_get(String name,Long price,String surname) {
this.price = price;
this.name = name;
this.surname = surname;
}
public Users_get() {
}
由于您使用的是IDE,因此只需单击生成getter和setters,它就会自动为您生成getter和setters,而不是手动编写方法。您会收到警告,因为在
用户\u get
类中,您的字段没有正确的getter。如果您有一个名为name
的字段,则正确的getter应该是:
public String getName() {
return name;
}
而不是:
public String getname() {
return name;
}
参见大写字母
N
与小写字母N
?要解决此问题,您应该更改Users\u get
类中所有getter的所有名称,如上所述。您会收到警告,因为在Users\u get
类中,您的字段没有正确的getter。如果您有一个名为name
的字段,则正确的getter应该是:
public String getName() {
return name;
}
而不是:
public String getname() {
return name;
}
参见大写字母
N
与小写字母N
?要解决这个问题,您应该更改Users\u-get
类中所有getter的所有名称,如上所述。除了其他答案之外,要获取Users\u-get
数据,根据数据库结构您必须再上一层
当前您的数据库引用指向购物车。因此,迭代cart的子级以获取cart数据。检查以下内容:
mUserDatabase = FirebaseDatabase.getInstance().getReference("Cart");
mUserDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
Users_get post = childSnapshot.getValue(Users_get.class);
System.out.println("DATAAAA: " + post);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
除了其他答案之外,要获得
用户\u获得数据,根据数据库结构,您必须再上一层
当前您的数据库引用指向购物车。因此,迭代cart的子级以获取cart数据。检查以下内容:
mUserDatabase = FirebaseDatabase.getInstance().getReference("Cart");
mUserDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
Users_get post = childSnapshot.getValue(Users_get.class);
System.out.println("DATAAAA: " + post);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
你犯了什么错误?在错误中,它应该说明发生这种情况的字段gw/ClassMapper:class com.example.ipill.Users上找不到-M0WlUbQHj1hdH40uWVF的setter/field\u get W/ClassMapper:class com.example.ipill.Users上找不到-m0u3uxqza00jq5o9a的setter/field\u在class com.example.ipill.Users上找不到-m0x00zr64rocyqhhof的setter/field\u在com.example.ipill.Users类上找不到-M0WxZhI98Xb1s9Xy5HV的设置器/字段\u获取您得到的错误是什么?在错误中,它应该说明发生这种情况的字段gw/ClassMapper:class com.example.ipill.Users上找不到-M0WlUbQHj1hdH40uWVF的setter/field\u get W/ClassMapper:class com.example.ipill.Users上找不到-m0u3uxqza00jq5o9a的setter/field\u在class com.example.ipill.Users上找不到-m0x00zr64rocyqhhof的setter/field\u在com.example.ipill.Users上找不到-M0WxZhI98Xb1s9Xy5HV的setter/字段。\u获取“它不工作”对我没有帮助,帮助你解决问题。什么不起作用?你还有别的错误吗?这是什么行为?我做了你告诉我的更改,我一直得到相同的错误:W/ClassMapper:在class com.example.ipill.Users上找不到-M0WlUbQHj1hdH40uWVF的setter/字段。在class com.example.ipill.Users上找不到-m0u3uxq2za00jq5o9a的setter/字段。在class com.example.ipill.Users上找不到-m0x00zr64rocyqhhof的setter/字段com.example.ipill.Users_在com.example.ipill.Users类上找不到-M0WxZhI98Xb1s9Xy5HV的setter/字段。这似乎是另一个警告,意味着原始警告已消失。这很好:)为此,请将您的数据库结构添加为JSON文件或至少一个屏幕截图。我添加了一张照片,以便您可以更好地看到它“它不工作”无助于我,帮助您解决问题。什么不起作用?你还有别的错误吗?这是什么行为?我做了你告诉我的更改,我一直得到相同的错误:W/ClassMapper:在class com.example.ipill.Users上找不到-M0WlUbQHj1hdH40uWVF的setter/字段。在class com.example.ipill.Users上找不到-m0u3uxq2za00jq5o9a的setter/字段。在class com.example.ipill.Users上找不到-m0x00zr64rocyqhhof的setter/字段com.example.ipill.Users_在com.example.ipill.Users类上找不到-M0WxZhI98Xb1s9Xy5HV的setter/字段。这似乎是另一个警告,意味着原始警告已消失。这很好:)为此,请将您的数据库结构添加为JSON文件或至少是一个屏幕截图。我添加了一张照片,以便您能更好地看到它谢谢您的回答,解决了我的问题。我认为,由于firebase或android studio从数据集获取数据,因此它会自动将对象数据映射到我的变量,因为它获取了整个对象,但正如我所看到的,它并没有那么智能:))非常感谢大家的支持。谢谢这个答案,解决了我的问题。我认为,由于firebase或android studio从数据集获取数据,因此它将自动将对象数据映射到我的变量,因为它获取整个对象,但正如我所看到的,它并不那么智能:))非常感谢大家的支持。