英文:
Delete and update an Item that has be searched by ID in android studio, Java and firebase
问题
以下是你提供的Java代码的中文翻译部分:
public class MainActivity extends AppCompatActivity {
EditText txtID, txtName, txtAdd, txtConNo, txtid;
Button btnSave, btnShow, btnUpdate, btnDelete;
DatabaseReference dbRef;
Student std;
String searchID;
private void clearControls() {
txtID.setText("");
txtName.setText("");
txtAdd.setText("");
txtConNo.setText("");
txtid.setText("");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtID = findViewById(R.id.EtID);
txtName = findViewById(R.id.EtName);
txtAdd = findViewById(R.id.EtAddress);
txtConNo = findViewById(R.id.EtConNo);
txtid = findViewById(R.id.search);
btnSave = findViewById(R.id.BtnSave);
btnShow = findViewById(R.id.BtnShow);
btnUpdate = findViewById(R.id.BtnUpdate);
btnDelete = findViewById(R.id.BtnDelete);
std = new Student();
}
protected void onResume() {
super.onResume();
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ...(略去了部分内容)
}
});
btnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ...(略去了部分内容)
}
});
btnUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ...(略去了部分内容)
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ...(略去了部分内容)
}
});
}
}
如果你还需要关于代码的其他部分的翻译或帮助,请随时告诉我。
英文:
I implemented code in Java to retrieve data from the Firebase database by searching with an ID and show it in the form. If I add the id it will show the data correctly.
But when I try to delete or update this data it is always showing as "No data resource". I tried to implement code but it is not working. How can I delete and update a specific data( Searched by ID),
The whole code I have tried..
public class MainActivity extends AppCompatActivity {
EditText txtID,txtName,txtAdd,txtConNo,txtid;
Button btnSave,btnShow,btnUpdate,btnDelete;
DatabaseReference dbRef;
Student std;
String searchID;
private void clearControls(){
txtID.setText("");
txtName.setText("");
txtAdd.setText("");
txtConNo.setText("");
txtid.setText("");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtID = findViewById(R.id.EtID);
txtName = findViewById(R.id.EtName);
txtAdd = findViewById(R.id.EtAddress);
txtConNo = findViewById(R.id.EtConNo);
txtid = findViewById(R.id.search);
btnSave = findViewById(R.id.BtnSave);
btnShow = findViewById(R.id.BtnShow);
btnUpdate = findViewById(R.id.BtnUpdate);
btnDelete = findViewById(R.id.BtnDelete);
std = new Student();
}
protected void onResume(){
super.onResume();
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbRef = FirebaseDatabase.getInstance().getReference().child("Student");
try{
if(TextUtils.isEmpty(txtID.getText().toString()))
Toast.makeText(getApplicationContext(),"Please enter an ID",Toast.LENGTH_SHORT).show();
else if(TextUtils.isEmpty(txtName.getText().toString()))
Toast.makeText(getApplicationContext(),"Please enter a Name",Toast.LENGTH_SHORT).show();
else if (TextUtils.isEmpty(txtAdd.getText().toString()))
Toast.makeText(getApplicationContext(),"Please enter an Address",Toast.LENGTH_SHORT).show();
else {
std.setID(txtID.getText().toString().trim());
std.setName(txtName.getText().toString().trim());
std.setAddress(txtAdd.getText().toString().trim());
std.setConNo(txtConNo.getText().toString().trim());
dbRef.push().setValue(std);
Toast.makeText(getApplicationContext(),"Data Saved Successfully",Toast.LENGTH_SHORT).show();
clearControls();
}
}
catch (NumberFormatException e){
Toast.makeText(getApplicationContext(),"Invalid Contact Number",Toast.LENGTH_SHORT).show();
}
}
});
btnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchID = txtid.getText().toString().trim();
DatabaseReference readRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference dref = readRef.child("Student");
Query query = dref.orderByChild("id").equalTo(searchID);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
txtID.setText((ds.child("id").getValue().toString()));
txtName.setText((ds.child("name").getValue().toString()));
txtAdd.setText((ds.child("address").getValue().toString()));
txtConNo.setText((ds.child("conNo").getValue().toString()));
}
}
else
Toast.makeText(getApplicationContext(),"No Source to Display",Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
});
}
});
btnUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseReference updf = FirebaseDatabase.getInstance().getReference().child("Student");
updf.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.hasChild("Student")){
try{
std.setID(txtID.getText().toString().trim());
std.setName(txtName.getText().toString().trim());
std.setAddress(txtAdd.getText().toString().trim());
std.setConNo(txtConNo.getText().toString().trim());
dbRef = FirebaseDatabase.getInstance().getReference().child("Student");
dbRef.setValue(std);
clearControls();
Toast.makeText(getApplicationContext(),"Data updated successfully",Toast.LENGTH_SHORT).show();
}catch(NumberFormatException e){
Toast.makeText(getApplicationContext(),"Invalid data",Toast.LENGTH_SHORT).show();
}
}else
Toast.makeText(getApplicationContext(),"Nothing to show",Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage());
}
});
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseReference deldf = FirebaseDatabase.getInstance().getReference().child("Student");
deldf.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.hasChild("Student")){
dbRef = FirebaseDatabase.getInstance().getReference().child("Student");
dbRef.removeValue();
clearControls();
Toast.makeText(getApplicationContext(),"Data Deleted successfully",Toast.LENGTH_SHORT).show();
}else
Toast.makeText(getApplicationContext(),"Nothing to show",Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage());
}
});
}
});
}
}
答案1
得分: 1
要删除具有 ID001
的元素,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference studentRef = rootRef.child("Student");
Query queryById = studentRef.orderByChild("id").equalTo(idToBeRemoved);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
ds.getRef().removeValue();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); // 不要忽略潜在的错误!
}
};
studentRef.addListenerForSingleValueEvent(valueEventListener);
上述代码的结果将是删除具有 ID001
的元素。如果您需要更新相同的元素,只需使用 updateChildren()
。
英文:
To remove the element with ID001
, please use the following lines of code:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference studentRef = rootRef.child("Student");
Query queryById = studentRef.orderByChild("id").equalTo(idToBeRemoved);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
ds.getRef().removeValue();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
};
studentRef.addListenerForSingleValueEvent(valueEventListener);
The result of the above code will be the deletion of the element with ID001
. If you need to update the same element, simply use updateChildren()
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论