В моей базе данных есть таблица Product, а внутри дочернего продукта - другая таблица, представляющая собой FK таблицы Product. И ПК таблицы Product - это pro_id.
Итак, я хотел создать обновление для страницы продукта. Я написал код, но понял, что написал код неправильно, и теперь я не уверен, как вызвать эту таблицу, чтобы обновить таблицу продуктов. введите описание изображения здесь
как мне написать для первого ребенка? Я объявил свою базу данных, но похоже, что ключ ссылается на pro_id, а не на дочерний элемент перед идентификатором продукта. Как это сделать, пожалуйста, помогите мне.
key=getIntent().getExtras().get("key").toString();
firebaseAuth = FirebaseAuth.getInstance();
databaseReference = FirebaseDatabase.getInstance().getReference("Product").child(key);
mStorageRef= FirebaseStorage.getInstance().getReference();
Product product = new Product(id,pname,pcategory,pprice,downloadUrl.toString());
databaseReference.child("Product").child("").child(id).setValue(product) //table and primary key
это код для добавления продукта
private void createProduct(){
if(CropImageUri !=null){
final String id = databaseReference.push().getKey();
final StorageReference ref = mStorageRef.child("images").child(id + "." +getFileExtension(CropImageUri));
mUploadTask = ref.putFile(CropImageUri)//save image into storage reference
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot task) {
Toast.makeText(getApplicationContext(),"Upload Successful",Toast.LENGTH_LONG).show();
//get url from the storage reference and assign to uri
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Uri downloadUrl = uri;
String name = pro_name.getText().toString().trim();
// String description = pro_desc.getText().toString().trim();
String price = pro_price.getText().toString().trim();
String category = pro_category.getSelectedItem().toString();
String imgurl = downloadUrl.toString();
Product product = new Product(id,name,price,imgurl,category);
databaseReference.child("Product").child(key).child(id).setValue(product) //table and primary key
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(AddProductActivity.this, "Add Successfully", Toast.LENGTH_SHORT).show();
finish();
Intent intent = new Intent(AddProductActivity.this, BrandActivity.class);
intent.putExtra("pro_id", id);
startActivity(intent);
} else {
Toast.makeText(AddProductActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
);
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getApplicationContext(),"Failed",Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
}
});
}else{
Toast.makeText(getApplicationContext(), "No file selected", Toast.LENGTH_SHORT).show();
}
}
это мой адаптер продукта
Picasso.with(context).load(productList.get(i).getPro_image()).into(myViewHolder.image);
myViewHolder.name.setText(productList.get(i).getPro_name());
myViewHolder.category.setText(productList.get(i).getPro_category());
myViewHolder.price.setText(productList.get(i).getPro_price());
myViewHolder.itemView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
// String key1 = brandList.get(i).getBrand_id();
String key = productList.get(i).getPro_id();
String name = productList.get(i).getPro_name();
String category= productList.get(i).getPro_category();
String price = productList.get(i).getPro_price();
String image = productList.get(i).getPro_image();
Intent intent = new Intent(context, updateProduct.class);
// intent.putExtra("key1",key1);
intent.putExtra("key",key);
intent.putExtra("pro_name",name);
intent.putExtra("pro_category",category);
intent.putExtra("pro_price",price);
intent.putExtra("pro_image",image);
context.startActivity(intent);
}
});
}
и я не знаю, какчтобы ссылаться на этот «ключ» внутри моей страницы обновления продукта