私はFirebaseの初心者です。 HashMapを使用してFirebaseから子供から子供のデータを取得する方法を知っていますか? ArrayListをHashMapに格納する方法を知っていますか?私がArrayListを使用しない場合、HashMapはArrayListを置き換えることができますか?HashMapを使用して、アンドロイドでFirebaseの子の子供からデータを取得する方法は?
私は、ユーザーがfirebaseデータベースに車のプレートを追加できるようにしたいと思います。私は、ArrayListを使用して、ユーザーがカープレートのリストをシステムに追加できるようにします。コードは他にその
List<String>carPlate=new ArrayList<String>();
mDatabase = FirebaseDatabase.getInstance().getReference();
user = FirebaseAuth.getInstance().getCurrentUser();
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
phone = Phone.getText().toString();
ic = IC.getText().toString();
fullname = FullName.getText().toString();
carplate = CarPlate.getText().toString();
carPlate.add(carplate);
//this data will be successful storing in firebase-database and the results will be the images above
Account account = new Account(fullname, phone, carPlate, ic);
if(user!=null) {
mDatabase.child(user.getUid()).setValue(account);
Toast.makeText(getBaseContext(), "Register Successfully...", Toast.LENGTH_LONG).show();
Intent in = new Intent(RegisterPage.this, MainActivity.class);
startActivity(in);
finish();
}
}
});
}
のように表示されます、他の以下に示すように、更新機能が含まれているクラス: //問題は、今私は、データを更新するAT HERE
です。このFirebaseデータベースによれば、私はマップを作成しようとしています。すべての値を取得し、カプセル化にsetterを使用します。その後、firebase-databaseからデータを削除します。それから、新しいオブジェクトを作成し、すべてのタスクを内部に配置します。最後に、私はfirebase-databaseにsetvalueを設定します。新しいデータを更新すると、firebaseデータベースは自動的に2番目のレベルにプッシュされます。
私は再び更新した場合、それは
第二の問題は、この行でNullExceptionで再びそれをプッシュします:()map.get( "_ IC")phoneAcc.set_IC ;
エラー
E/UncaughtException: java.lang.NullPointerException
at com.google.online_mobile_flexi_parking.ChangeEmailPassword$8$1.onDataChange(ChangeEmailPassword.java:251)
at com.google.android.gms.internal.zzakg.zza(Unknown Source)
at com.google.android.gms.internal.zzalg.zzcxk(Unknown Source)
at com.google.android.gms.internal.zzalj$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5028)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
at dalvik.system.NativeStart.main(Native Method)
、ここでは私のコードです:
private List CarPlate;
changePhone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressBar.setVisibility(View.VISIBLE);
txtPhone = newPhone.getText().toString().trim();
if (!txtPhone.equals("")) {
mDatabase.child(user.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String key=mDatabase.child(user.getUid()).getKey();
Account phoneAcc=new Account();
Map<String,String>map=(Map)dataSnapshot.getValue();
phoneAcc.set_Key(mDatabase.child(user.getUid()).getKey());
phoneAcc.set_IC(map.get("_IC"));
phoneAcc.set_Phone(txtPhone);
phoneAcc.set_FullName(map.get("_FullName"));
CarPlate.add(map.get("_CarPlate0"));
phoneAcc.set_CarPlate0(CarPlate);
//dataSnapshot.getRef().removeValue();
mDatabase.child(mDatabase.child(user.getUid()).getKey()).removeValue();
Map<String,Object> task=new HashMap<String,Object>();
task.put("_FullName",phoneAcc.get_FullName());
task.put("_CarPlate0",phoneAcc.get_CarPlate0());
task.put("_Phone",phoneAcc.get_Phone());
task.put("_IC",phoneAcc.get_IC());
mDatabase.child(phoneAcc.get_Key()).setValue(task);
Toast.makeText(ChangeEmailPassword.this, "Phone Number is updated, sign in with new password!", Toast.LENGTH_SHORT).show();
startActivity(new Intent(ChangeEmailPassword.this, MainActivity.class));
finish();
signOut();
progressBar.setVisibility(View.GONE);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
} else if (txtPhone.equals("")) {
newPhone.setError("Enter phone number");
progressBar.setVisibility(View.GONE);
}
}
});
あなたがタグ(_carPlate)を使用しますか? – Rahul
私の要点ではないと思っています – Jane
私の答えをチェックしても問題が残っていれば教えてください – Rahul