私は予約申込みをしたいと思います。私は他のノードでいくつかのデータをcacthし、それを変数に格納し、それを別のノードに新しいデータ入力で挿入する必要があります。これは私が欲しい私のデータstuctureである:例えばfirebaseデータベースで値を取得し、変数に保存してください:android
{
"laundry_category" : {
"laundry_category1" : {
"name" : "clean laundry",
"description" : "xxxxxxx"
}
},
"laundry" : {
"laundry_category1" : {
"laundry_id_1" : {
"name" : "ABC",
"colour" : "red",
"description" : "xxxxx"
}
}
}
、私は、データの記述形式のlaundry_categoryノードを取得し、洗濯物をノードに挿入したいです。出来ますか? 私のコードで試してみましたが、うまくいきません。これは私のaddLaundry.javaコードです:
addLaundry.java
DatabaseReference databaseLaundry;
DatabaseReference databaseCategory;
List<Laundry> laundryList;
@Override
protected void onStart() {
super.onStart();
databaseLaundry.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
laundryList.clear();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Laundry laundry = postSnapshot.getValue(Laundry.class);
laundryList.add(laundry);
}
LaundryList adapter = new LaundryList(TambahLaundryActivity.this, laundryList);
listViewLaundry.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_laundry);
btAddLaundry = (Button)findViewById(R.id.bn_add_laundry);
listViewLaundry = (ListView)findViewById(R.id.listViewLaundryLis);
laundryList = new ArrayList<>();
Intent intentAddLaundry = getIntent();
String id_category = intentAddLaundry.getStringExtra(MainActivity.category_id);
String description_category = intentTambahLaundry.getStringExtra(MainActivity.category_description);
databaseLaundry = FirebaseDatabase.getInstance().getReference("laundry").child(id_category);
databaseLaundry = FirebaseDatabase.getInstance().getReference("laundry").child(description_category);
btAddLaundry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addLaundry();
}
});
}
public void addLaundry() {
databaseLaundry.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
category a = postSnapshot.getValue(category.class);
String var_category_description = ((Map)a).get("category_description").toString();
String id = databaseLaundry.push().getKey();
Laundry laundry = new Laundry(id, name_laundry, var_category_description);
databaseLaundry.child(id).setValue(laundry);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
Laundry.java
public class Laundry {
private String laundry_id;
private String laundry_nama;
private String laundry_alamat;
private String kategori_nama;
public Laundry() {
}
public Laundry(String laundry_id, String laundry_name, String category_description {
this.laundry_id = laundry_id;
this.laundry_nama = laundry_nama;
this.category_description = category_description;
}
public String getLaundry_id() {
return laundry_id;
}
public String getLaundry_name() {
return laundry_name;
}
public String getLaundry_alamat() {
return laundry_alamat;
}
public String getCategory_description() {
return category_description;
}
}
category.java
public class Category {
private String category_id;
private String category_name;
private String category_description;
public Category() {
}
public Category(String category_id, String category_name, category_description) {
this.category_id = category_id;
this.category_name = category_name;
this.category_description = category_description;
}
public String getcategory_id() {
return category_id;
}
public String getcategory_name() {
return category_name;
}
public String getcategory_description() {
return category_description;
}
ありがとうあなたの助けのためにそんなに:)
'databaseLaundry'を2回初期化しますが、これは間違いのようです。しかし、一般的にStack Overflowはデバッガの代用品ではありません。外部依存関係のない単一のコードスニペットに問題を分けると、たとえば、ユーザー入力から読み込む 'description_category'の代わりにハードコーディングされた文字列を使用すると、最も簡単です。このような孤立したスニペットは[MCVE](http://stackoverflow.com/help/mcve)として知られており、私たちがあなたを助ける最も簡単な方法です。 –