2017-03-02 11 views
0

データベースFirebaseデータベース:-KeAi52QSaiuf7p5jEYMにはセッター/フィールドはクラス

"userinformation": [ 
    "-KeAi52QSaiuf7p5jEYM" : { 
     "website" : "test1" 
     "username" : "test1" 
    } 
} 

クラスをMyProfileがデータ

package **.****; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.TextView; 
import android.view.Menu; 
import android.view.MenuItem; 

import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.database.ValueEventListener; 

import ****.****.m_Model.useri1; 



public class myprofile extends AppCompatActivity { 


    private TextView myusername111; 
    private DatabaseReference mFirebaseDatabase; 
    private FirebaseDatabase mFirebaseInstance; 


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




     myusername111 = (TextView) findViewById(R.id.textview22); 
     mFirebaseInstance = FirebaseDatabase.getInstance(); 

     mFirebaseInstance.getReference("userinformation").addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       useri1 model = dataSnapshot.getValue(useri1.class); 

      myusername111.setText(model.getusername()); 


      } 
      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 


     }); 




    } 

クラスedit_profile

package package ***.****; 

import android.app.AlertDialog; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 

import ***.***.m_Model.useri1; 




public class edit_profile extends AppCompatActivity { 
    private Toolbar toolbar; 






    private EditText website; 
    private EditText username; 
    private Button bsubmit; 
    private DatabaseReference mFirebaseDatabase; 
    private FirebaseDatabase mFirebaseInstance; 


    private android.view.ViewGroup parent; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     setContentView(R.layout.activity_edit_profile); 


     mFirebaseInstance = FirebaseDatabase.getInstance(); 
     mFirebaseDatabase = mFirebaseInstance.getReference("users"); 
     usernamr = (EditText) findViewById(R.id.usernamr); 
     website = (EditText) findViewById(R.id.website); 
     Button bsubmit = (Button) findViewById(R.id.b_submit); 


       bsubmit.setOnClickListener(new View.OnClickListener() { 


        @Override 
        public void onClick(View v) { 

         if (!isEmpty(website, username) && !isEmpty(website, username)) { 
          mNewprofile("53", website.getText().toString().trim(), username.getText().toString().trim()); 
          finish(); 
          startActivity(new Intent(getApplicationContext(), myprofile.class)); 
         } 
        } 


     }); 



    } 
    private void mNewprofile(String s, String username, String website) { 



     new_profile1 userinformation1 = new new_profile1(website, username); 

     mFirebaseDatabase.child("userinformation").setValue(userinformation1); 
    } 
を取得しないで発見しました

クラスuseri1

package **.****.m_Model; 



public class useri1 { 


    public String username; 
    public String website; 


    public Update_user1() { 
    } 
    public Update_user1(String username,String website) { 
     this.website = website; 
     this.username = username; 


    } 

    public String getwebsite() { 

     return website; 
    } 

    public String getusername() { 

     return username; 
    } 
    public void setwebsite(String website) { 
      this.website = website; 

     } 
    public void setusermame(String usermame) { 
     this.usermame = usermame; 

    } 

エラー:

W/ClassMapper: No setter/field for -KeAi52QSaiuf7p5jEYM found on class ***.****.m_Model.useri1

答えて

0

あなたはuserinformationの値を取得しています。

"-KeAi52QSaiuf7p5jEYM" : { 
    "website" : "test1" 
    "username" : "test1" 
} 

useri1websiteusername性質を持っていますので、あなたがonDataChangeで取得スナップショットは、この値を持つことになります。しかし、上記のJSONには、-KeAi52QSaiuf7p5jEYMという名前のプロパティしかありません。だから2つは一致しないので、あなたが得るエラーにつながる。結果のコードは次のようになり、スナップショットの子供以上

  • ループ
  • が大幅にあなたのPOJO

を簡素化:

mFirebaseInstance.getReference("userinformation").addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) { 
      MyUser model = dataSnapshot.getValue(MyUser.class); 
      myusername111.setText(model.username); 
     } 
    } 
    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     throw databaseError.toException(); // don't ignore errors 
    } 
}); 

public class MyUser { 
    public String username; 
    public String website; 
} 

あなたはいくつかのことを行う必要があり、これを修正するには

でも可能ですゲッターとセッターとお尻。しかし、その場合、getterがJava Beanの大文字小文字の規則に従っていることを確認してください。だから、:

public class MyUser { 
    private String username; 
    private String website; 
    public MyUser() { 
    } 
    public String getUsername() { return username; } 
    public void setUsername(string value) { username = value; } 
    public String getWebsite() { return website; } 
    public void setWebsite(string value) { website = value; } 
} 
0

あなたはChildEventListenerの代わりValueEventListenerを使用する必要があります。

ValueEventListenerを使用しているため、Firebaseは-KeAi52QSaiuf7p5jEYMという名前のプロパティを設定しようとしていますが、これはプロパティではなく、キーです。

ChildEventListenerを追加するコードは次のようになります。

mFirebaseInstance.getReference("userinformation").addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String previousKey) { 
      Update_user1 user = dataSnapshot.getValue(Update_user1.class); 
      // ... 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String previousKey) { 
      // ... 
     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String previousKey) { 
      // ... 
     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 
      // ... 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      // ... 
     } 
    }); 
関連する問題