2017-06-19 6 views
4

私はFirebaseデータベースを初めて使用しています。Firebaseデータベースにデータの配列を保存したいだけです。私はそれを保存しようとしているときにエラーを表示します。以下は私が述べたPOJOクラスLogcatデータの保存中にエラーが発生しました。AndroidからFirebaseデータベースにデータの配列を保存する方法は?

POJOクラスのコーディング

@IgnoreExtraProperties 
public class StudentReviews { 

public String student_name; 
public String student_class; 
public String student_image; 
public String student_section; 

public ArrayList<Reviews> reviewsList = new ArrayList<>(); 

public void StudentReviews() {} 

public class Reviews { 
     public String subject; 
     public String marks_taken; 
     public String total_marks; 
     public String teacher; 
    } 
} 

データの保存

StudentReviews studentReviews = new StudentReviews(); 
studentReviews.student_name = et_studentName.getText().toString(); 
studentReviews.student_class = et_student_class.getText().toString(); 
studentReviews.student_image = ""; 
studentReviews.student_section = sp_section.getSelectedItem().toString(); 
studentReviews.reviewsList = reviewsArray; 

dbUploadReview.push().setValue(studentReviews); //165th Line in Logcat Error 

Logcatエラー私はトンを削除

com.google.firebase.database.DatabaseException: Invalid key: this$0. Keys must not contain '/', '.', '#', '$', '[', or ']' 
at com.google.android.gms.internal.zzbtf.zzjq(Unknown Source) 
at com.google.android.gms.internal.zzbtf.zzay(Unknown Source) 
at com.google.android.gms.internal.zzbtf.zzay(Unknown Source) 
at com.google.android.gms.internal.zzbtf.zzay(Unknown Source) 
at com.google.firebase.database.DatabaseReference.zza(Unknown Source) 
at com.google.firebase.database.DatabaseReference.setValue(Unknown Source) 
at com.trending.trendingadmin.fragment.WriteReview.uploadReviews(WriteReview.java:165) 

彼のpublic ArrayList<Reviews> reviewsList = new ArrayList<>();レビューリストにPOJOクラスデータは完全にFirebsaeデータベースに保存されています。

誰もがこの問題を解決するのを助けてくれます。

更新

私は2つの方法でこの問題を解決しています。 OlegOsipenko

1)で与えられる提案は別のファイルに内部クラスを移動する)静的

2として内部クラスを作ります。

私は期待していました。

+0

WriteReview.javaの165行目は何ですか? –

+0

また、[mcve]を入力してください。 –

+0

@Yugeshのデータには、 '/'、 '。'、 '#'、 '$'、 '['、 ']'は含まれていない必要があります。同じ問題が発生していることを見つけるためには、文字または数字だけを使用してください。 –

答えて

1

.setValue()メソッドにはArrayではなくListが必要です。オブジェクトのリストを使用することができます。

Firebase ref = new Firebase("<my-firebase-app>/names"): 
String[] names = {"John","Tim","Sam","Ben"}; 
List nameList = new ArrayList<String>(Arrays.asList(names)); 
// Now set value with new nameList 
ref.setValue(nameList); 

Read the Firebase docs for more information.

0

あなたのLogcatエラーとしてKeys must not contain '/', '.', '#', '$', '[', or ']'は、このシンボルの各1がFirebase databaseでキーとして許されないことを意味している、と言います。

データオブジェクトをFirebaseデータベースに書き込むために、Listの代わりにMapを使用することをお勧めします。また、pojoクラスでこの変更を行う必要があります。データを保存するには、次のコードを使用してください:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference namesRef = rootRef.child("names"); 
Map<String, Object> map = new HashMap<>(); 
map.put("nameId1", "John"); 
map.put("nameId2", "Tim"); 
map.put("nameId3", "Sam"); 
//and os on 
namesRef.updateChildren(map); 

希望すると助かります。

+0

あなたの提案に感謝します。 Amがこの問題を解決しました。 – Yugesh

+0

この方法で問題を解決しましたか? –

+0

いいえ、私の質問の更新を参照してください。 – Yugesh

関連する問題