首页 > 解决方案 > W / ClassMapper:类firebase android studio没有设置器/字段

问题描述

我有一个用户帐户,每个用户帐户都有自己的投资者

下面是我的投资者课


public class Investor {

    int investorAvatar;
    String name;
    String username;
    String country;
    String phoneNo;
    String securityCode;
    String dateJoined;
    String sharedAgreed;

    public Investor() {
    }

    public Investor(String name, String username, String country,
                    String phoneNo, String securityCode,
                    String dateJoined, String sharedAgreed) {

        this.name = name;
        this.username = username;
        this.country = country;
        this.phoneNo = phoneNo;
        this.securityCode = securityCode;
        this.dateJoined = dateJoined;
        this.sharedAgreed = sharedAgreed;

    }

    public int getInvestorAvatar() {
        return investorAvatar;
    }

    public void setInvestorAvatar(int investorAvatar) {
        this.investorAvatar = investorAvatar;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getDateJoined() {
        return dateJoined;
    }

    public void setDateJoined(String dateJoined) {
        this.dateJoined = dateJoined;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getPhoneNo() {
        return phoneNo;
    }

    public void setPhoneNo(String phoneNo) {
        this.phoneNo = phoneNo;
    }

    public String getSecurityCode() {
        return securityCode;
    }

    public void setSecurityCode(String securityCode) {
        this.securityCode = securityCode;
    }

    public String getSharedAgreed() {
        return sharedAgreed;
    }

    public void setSharedAgreed(String sharedAgreed) {
        this.sharedAgreed = sharedAgreed;
    }
}

以下是我的投资者在 Firebase 实时数据库中的情况

{
    "CVSmRGYF49b0D4QawhA7dF4ZSKT2": {
        "-Mn0hCk5sC7Og5_fyf0X": {
            "country": "Tanzania",
            "dateJoined": "2021-10-28",
            "investorAvatar": 0,
            "name": "usertest5",
            "phoneNo": "074561344",
            "securityCode": "8282829",
            "sharedAgreed": "12",
            "username": "testuser5"
        }
    },
    "DR2mU44n0CW91uB3AhB2W426WrK2": {
        "-Mn0awrOK1BDsCPnfH-Q": {
            "country": "kenya",
            "dateJoined": "2021-10-25",
            "investorAvatar": 0,
            "name": "Test User",
            "phoneNo": "0714810492",
            "securityCode": "154512122",
            "sharedAgreed": "12",
            "username": "testuser1"
        },
        "-Mn0ezofS6Rjt6KbaytX": {
            "country": "Uganda",
            "dateJoined": "2021-10-27",
            "investorAvatar": 0,
            "name": "testuser4",
            "phoneNo": "0763566445",
            "securityCode": "568956",
            "sharedAgreed": "12",
            "username": "user4"
        }
    }
}

CVSmRGYF49b0D4QawhA7dF4ZSKT2 和 DR2mU44n0CW91uB3AhB2W426WrK2 是用户 ID,在每个用户 ID 下方都有一个投资者列表

下面是我如何获取用户 id DR2mU44n0CW91uB3AhB2W426WrK2 中的投资者列表,仅使用 Investor Dao 类并尝试在片段中的 onViewCreated 方法中打印列表


public class InvestorDao {

    private final DatabaseReference rootDatabaseReference;

    private final FirebaseUser firebaseUser;

    public InvestorDao() {

        firebaseUser = FirebaseAuth.getInstance().getCurrentUser();


        FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance("https://lucemtrader-default-rtdb.europe-west1.firebasedatabase.app");

        rootDatabaseReference = firebaseDatabase.getReference("Investors").child("DR2mU44n0CW91uB3AhB2W426WrK2");


    }


    public List<Investor> returnInvestorsList() {

        List<Investor> investorsList = new ArrayList<>();

        rootDatabaseReference.addValueEventListener(new ValueEventListener(){

            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                for (DataSnapshot dataSnapshot: snapshot.getChildren()){

                    Investor investor = dataSnapshot.getValue(Investor.class);

                    investorsList.add(investor);

                }

            }

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

            }
        });

        return investorsList;
    }


下面是我如何在片段中的 onViewCreated 方法中记录我的列表


Log.wtf("InvestorsList", new Gson().toJson(new InvestorDao().returnInvestorsList()));

但是我遇到了错误但在我的课堂上我已经包含了getter和setter可能是什么问题


W/ClassMapper: No setter/field for CVSmRGYF49b0D4QawhA7dF4ZSKT2 found on class manu.apps.lucemtrader.classes.Investor
    No setter/field for DR2mU44n0CW91uB3AhB2W426WrK2 found on class manu.apps.lucemtrader.classes.Investor

标签: javaandroidfirebasefirebase-realtime-databasegetter-setter

解决方案


推荐阅读