2017-04-15 57 views
1

我试图从我的firebase数据库检索数据并将其显示在ListView中的TextView中。但是,我在这一行上收到'缺少构造函数'异常:Clients clients = clientsSnapshot.getValue(Clients.class);DatabaseException:类缺少一个没有参数的构造函数

下面是完整的异常: enter image description here

不知道如何解决它。我在Firebase或Android开发方面都不是很有经验,所以任何帮助都将不胜感激。 干杯家伙!

public class ViewProfile extends AppCompatActivity{ 

    ListView listviewClients; 
    List<Clients> clientsList; 

    DatabaseReference databaseClients; 

    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_view_profile); 

     listviewClients = (ListView) findViewById(R.id.listviewClients); 
     databaseClients = FirebaseDatabase.getInstance().getReference("clients"); 

     clientsList = new ArrayList<>(); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 

     databaseClients.addValueEventListener (new ValueEventListener() { 


      @Override 
      public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) { 
       clientsList.clear(); 

       for (com.google.firebase.database.DataSnapshot clientsSnapshot : dataSnapshot.getChildren()) { 
        Clients clients = clientsSnapshot.getValue(Clients.class); 

        clientsList.add(clients); 
       } 
       ClientsList adapter = new ClientsList(ViewProfile.this, clientsList); 
       listviewClients.setAdapter(adapter); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 

     }); 
    } 
} 

Clients.java:

public class Clients { 

    String clientName; 
    String clientCareer; 
    Boolean techCB; 
    Boolean mediCB; 
    Boolean renewableEnergyNF; 
    Boolean googleNF; 
    Boolean novartisNF; 
    Boolean teslaNF; 
    Boolean fbLRS; 
    Boolean applLRS; 
    Boolean yhooLRS; 
    Boolean eurusdCB; 
    Boolean usdrubCU; 
    Boolean silverCO; 
    Boolean goldCO; 
    Boolean gbpusdCU; 
    Boolean nsdqI; 
    Boolean sp500I; 


// public Clients(String id, String name, String career, Boolean techCB, Boolean mediCB, Boolean renewableEnergyNF, Boolean googleNF, Boolean novartisNF, Boolean teslaNF, Boolean fbLRS, Boolean applLRS, Boolean yhooLRS, Boolean eurusdCB, Boolean usdrubCU, Boolean silverCO, Boolean goldCO, Boolean gbpusdCU, Boolean nsdqI, Boolean sp500I) { 
// 
// } 

    public Clients(String id, String clientCareer, String clientName, Boolean techCB, Boolean mediCB, Boolean renewableEnergyNF, 
        Boolean googleNF, Boolean novartisNF, Boolean teslaNF, Boolean fbLRS, Boolean applLRS, Boolean yhooLRS, Boolean eurusdCB, 
        Boolean usdrubCU, Boolean silverCO, Boolean goldCO, Boolean gbpusdCU, Boolean nsdqI, Boolean sp500I) { 

     this.clientName = clientName; 
     this.clientCareer = clientCareer; 
     this.techCB = techCB; 
     this.mediCB = mediCB; 
     this.renewableEnergyNF = renewableEnergyNF; 
     this.googleNF = googleNF; 
     this.novartisNF = novartisNF; 
     this.teslaNF = teslaNF; 
     this.fbLRS = fbLRS; 
     this.applLRS = applLRS; 
     this.yhooLRS = yhooLRS; 
     this.eurusdCB = eurusdCB; 
     this.usdrubCU = usdrubCU; 
     this.silverCO = silverCO; 
     this.goldCO = goldCO; 
     this.gbpusdCU = gbpusdCU; 
     this.nsdqI = nsdqI; 
     this.sp500I = sp500I; 
    } 

    public String getClientName() { 
     return clientName; 
    } 

    public String getClientCareer() { 
     return clientCareer; 
    } 

    public Boolean getTechCB() { 
     return techCB; 
    } 

    public Boolean getMediCB() { 
     return mediCB; 
    } 

    public Boolean getRenewableEnergyNF() { 
     return renewableEnergyNF; 
    } 

    public Boolean getGoogleNF() { 
     return googleNF; 
    } 

    public Boolean getNovartisNF() { 
     return novartisNF; 
    } 

    public Boolean getTeslaNF() { 
     return teslaNF; 
    } 

    public Boolean getFbLRS() { 
     return fbLRS; 
    } 

    public Boolean getApplLRS() { 
     return applLRS; 
    } 

    public Boolean getYhooLRS() { 
     return yhooLRS; 
    } 

    public Boolean getEurusdCB() { 
     return eurusdCB; 
    } 

    public Boolean getUsdrubCU() { 
     return usdrubCU; 
    } 

    public Boolean getSilverCO() { 
     return silverCO; 
    } 

    public Boolean getGoldCO() { 
     return goldCO; 
    } 

    public Boolean getGbpusdCU() { 
     return gbpusdCU; 
    } 

    public Boolean getNsdqI() { 
     return nsdqI; 
    } 

    public Boolean getSp500I() { 
     return sp500I; 
    } 
+1

'客户端类“没有无参数构造函数 – EpicPandaForce

+1

您需要哪些帮助?你知道什么是构造函数吗?你知道什么是论据吗?一旦你理解了术语,你应该能够弄清楚如何解决这个错误。 –

+0

发布“客户”类代码.. – rafsanahmad007

回答

7

在模型中添加类:无参数constructor

public class Clients { 
    private String name; //your variables 
    ... 
    ... 

    public Clients(){ } //no argument constructor 
+0

谢谢!这为我修好了。再次感谢。 – Joe

2

我知道的论点是什么,他们是像参数

是的,参数和参数是相同的东西。

我不知道构造函数的定义,但它通常是公共_____(){}?

是的,这是正确的。错误消息告诉你,你的Clients类没有没有任何参数的构造函数。如果您创建的类没有构造函数,则会自动生成无参数构造函数。你会得到错误,因为你有一个带有参数的构造函数Clients。因此,您需要明确提供一个不带任何参数的参数,以使其能够正确使用Firebase。

p.s.您应该使用boolean而不是Boolean。有关更多详细信息,您应该了解更多关于基本类型和包装器对象之间的区别。

+1

感谢您的所有信息。我只是试图让自己沉浸其中,这非常有帮助!欢呼,祝你有美好的一天。 – Joe

相关问题