删除和更新在Android Studio中通过ID搜索的项目,使用Java和Firebase。

huangapple go评论91阅读模式
英文:

Delete and update an Item that has be searched by ID in android studio, Java and firebase

问题

以下是你提供的Java代码的中文翻译部分:

  1. public class MainActivity extends AppCompatActivity {
  2. EditText txtID, txtName, txtAdd, txtConNo, txtid;
  3. Button btnSave, btnShow, btnUpdate, btnDelete;
  4. DatabaseReference dbRef;
  5. Student std;
  6. String searchID;
  7. private void clearControls() {
  8. txtID.setText("");
  9. txtName.setText("");
  10. txtAdd.setText("");
  11. txtConNo.setText("");
  12. txtid.setText("");
  13. }
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. txtID = findViewById(R.id.EtID);
  19. txtName = findViewById(R.id.EtName);
  20. txtAdd = findViewById(R.id.EtAddress);
  21. txtConNo = findViewById(R.id.EtConNo);
  22. txtid = findViewById(R.id.search);
  23. btnSave = findViewById(R.id.BtnSave);
  24. btnShow = findViewById(R.id.BtnShow);
  25. btnUpdate = findViewById(R.id.BtnUpdate);
  26. btnDelete = findViewById(R.id.BtnDelete);
  27. std = new Student();
  28. }
  29. protected void onResume() {
  30. super.onResume();
  31. btnSave.setOnClickListener(new View.OnClickListener() {
  32. @Override
  33. public void onClick(View v) {
  34. // ...(略去了部分内容)
  35. }
  36. });
  37. btnShow.setOnClickListener(new View.OnClickListener() {
  38. @Override
  39. public void onClick(View v) {
  40. // ...(略去了部分内容)
  41. }
  42. });
  43. btnUpdate.setOnClickListener(new View.OnClickListener() {
  44. @Override
  45. public void onClick(View view) {
  46. // ...(略去了部分内容)
  47. }
  48. });
  49. btnDelete.setOnClickListener(new View.OnClickListener() {
  50. @Override
  51. public void onClick(View view) {
  52. // ...(略去了部分内容)
  53. }
  54. });
  55. }
  56. }

如果你还需要关于代码的其他部分的翻译或帮助,请随时告诉我。

英文:

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.

Successfully retrieved data
删除和更新在Android Studio中通过ID搜索的项目,使用Java和Firebase。

Data in firebase
删除和更新在Android Studio中通过ID搜索的项目,使用Java和Firebase。

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..

  1. public class MainActivity extends AppCompatActivity {
  2. EditText txtID,txtName,txtAdd,txtConNo,txtid;
  3. Button btnSave,btnShow,btnUpdate,btnDelete;
  4. DatabaseReference dbRef;
  5. Student std;
  6. String searchID;
  7. private void clearControls(){
  8. txtID.setText("");
  9. txtName.setText("");
  10. txtAdd.setText("");
  11. txtConNo.setText("");
  12. txtid.setText("");
  13. }
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. txtID = findViewById(R.id.EtID);
  19. txtName = findViewById(R.id.EtName);
  20. txtAdd = findViewById(R.id.EtAddress);
  21. txtConNo = findViewById(R.id.EtConNo);
  22. txtid = findViewById(R.id.search);
  23. btnSave = findViewById(R.id.BtnSave);
  24. btnShow = findViewById(R.id.BtnShow);
  25. btnUpdate = findViewById(R.id.BtnUpdate);
  26. btnDelete = findViewById(R.id.BtnDelete);
  27. std = new Student();
  28. }
  29. protected void onResume(){
  30. super.onResume();
  31. btnSave.setOnClickListener(new View.OnClickListener() {
  32. @Override
  33. public void onClick(View v) {
  34. dbRef = FirebaseDatabase.getInstance().getReference().child("Student");
  35. try{
  36. if(TextUtils.isEmpty(txtID.getText().toString()))
  37. Toast.makeText(getApplicationContext(),"Please enter an ID",Toast.LENGTH_SHORT).show();
  38. else if(TextUtils.isEmpty(txtName.getText().toString()))
  39. Toast.makeText(getApplicationContext(),"Please enter a Name",Toast.LENGTH_SHORT).show();
  40. else if (TextUtils.isEmpty(txtAdd.getText().toString()))
  41. Toast.makeText(getApplicationContext(),"Please enter an Address",Toast.LENGTH_SHORT).show();
  42. else {
  43. std.setID(txtID.getText().toString().trim());
  44. std.setName(txtName.getText().toString().trim());
  45. std.setAddress(txtAdd.getText().toString().trim());
  46. std.setConNo(txtConNo.getText().toString().trim());
  47. dbRef.push().setValue(std);
  48. Toast.makeText(getApplicationContext(),"Data Saved Successfully",Toast.LENGTH_SHORT).show();
  49. clearControls();
  50. }
  51. }
  52. catch (NumberFormatException e){
  53. Toast.makeText(getApplicationContext(),"Invalid Contact Number",Toast.LENGTH_SHORT).show();
  54. }
  55. }
  56. });
  57. btnShow.setOnClickListener(new View.OnClickListener() {
  58. @Override
  59. public void onClick(View v) {
  60. searchID = txtid.getText().toString().trim();
  61. DatabaseReference readRef = FirebaseDatabase.getInstance().getReference();
  62. DatabaseReference dref = readRef.child("Student");
  63. Query query = dref.orderByChild("id").equalTo(searchID);
  64. query.addListenerForSingleValueEvent(new ValueEventListener() {
  65. @Override
  66. public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  67. if(dataSnapshot.exists()) {
  68. for (DataSnapshot ds : dataSnapshot.getChildren()) {
  69. txtID.setText((ds.child("id").getValue().toString()));
  70. txtName.setText((ds.child("name").getValue().toString()));
  71. txtAdd.setText((ds.child("address").getValue().toString()));
  72. txtConNo.setText((ds.child("conNo").getValue().toString()));
  73. }
  74. }
  75. else
  76. Toast.makeText(getApplicationContext(),"No Source to Display",Toast.LENGTH_SHORT).show();
  77. }
  78. @Override
  79. public void onCancelled(@NonNull DatabaseError databaseError) {
  80. Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
  81. }
  82. });
  83. }
  84. });
  85. btnUpdate.setOnClickListener(new View.OnClickListener() {
  86. @Override
  87. public void onClick(View view) {
  88. DatabaseReference updf = FirebaseDatabase.getInstance().getReference().child("Student");
  89. updf.addListenerForSingleValueEvent(new ValueEventListener() {
  90. @Override
  91. public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  92. if(dataSnapshot.hasChild("Student")){
  93. try{
  94. std.setID(txtID.getText().toString().trim());
  95. std.setName(txtName.getText().toString().trim());
  96. std.setAddress(txtAdd.getText().toString().trim());
  97. std.setConNo(txtConNo.getText().toString().trim());
  98. dbRef = FirebaseDatabase.getInstance().getReference().child("Student");
  99. dbRef.setValue(std);
  100. clearControls();
  101. Toast.makeText(getApplicationContext(),"Data updated successfully",Toast.LENGTH_SHORT).show();
  102. }catch(NumberFormatException e){
  103. Toast.makeText(getApplicationContext(),"Invalid data",Toast.LENGTH_SHORT).show();
  104. }
  105. }else
  106. Toast.makeText(getApplicationContext(),"Nothing to show",Toast.LENGTH_SHORT).show();
  107. }
  108. @Override
  109. public void onCancelled(@NonNull DatabaseError databaseError) {
  110. Log.d("TAG", databaseError.getMessage());
  111. }
  112. });
  113. }
  114. });
  115. btnDelete.setOnClickListener(new View.OnClickListener() {
  116. @Override
  117. public void onClick(View view) {
  118. DatabaseReference deldf = FirebaseDatabase.getInstance().getReference().child("Student");
  119. deldf.addListenerForSingleValueEvent(new ValueEventListener() {
  120. @Override
  121. public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  122. if(dataSnapshot.hasChild("Student")){
  123. dbRef = FirebaseDatabase.getInstance().getReference().child("Student");
  124. dbRef.removeValue();
  125. clearControls();
  126. Toast.makeText(getApplicationContext(),"Data Deleted successfully",Toast.LENGTH_SHORT).show();
  127. }else
  128. Toast.makeText(getApplicationContext(),"Nothing to show",Toast.LENGTH_SHORT).show();
  129. }
  130. @Override
  131. public void onCancelled(@NonNull DatabaseError databaseError) {
  132. Log.d("TAG", databaseError.getMessage());
  133. }
  134. });
  135. }
  136. });
  137. }
  138. }

答案1

得分: 1

要删除具有 ID001 的元素,请使用以下代码行:

  1. DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
  2. DatabaseReference studentRef = rootRef.child("Student");
  3. Query queryById = studentRef.orderByChild("id").equalTo(idToBeRemoved);
  4. ValueEventListener valueEventListener = new ValueEventListener() {
  5. @Override
  6. public void onDataChange(DataSnapshot dataSnapshot) {
  7. for(DataSnapshot ds : dataSnapshot.getChildren()) {
  8. ds.getRef().removeValue();
  9. }
  10. }
  11. @Override
  12. public void onCancelled(@NonNull DatabaseError databaseError) {
  13. Log.d("TAG", databaseError.getMessage()); // 不要忽略潜在的错误!
  14. }
  15. };
  16. studentRef.addListenerForSingleValueEvent(valueEventListener);

上述代码的结果将是删除具有 ID001 的元素。如果您需要更新相同的元素,只需使用 updateChildren()

英文:

To remove the element with ID001, please use the following lines of code:

  1. DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
  2. DatabaseReference studentRef = rootRef.child("Student");
  3. Query queryById = studentRef.orderByChild("id").equalTo(idToBeRemoved);
  4. ValueEventListener valueEventListener = new ValueEventListener() {
  5. @Override
  6. public void onDataChange(DataSnapshot dataSnapshot) {
  7. for(DataSnapshot ds : dataSnapshot.getChildren()) {
  8. ds.getRef().removeValue();
  9. }
  10. }
  11. @Override
  12. public void onCancelled(@NonNull DatabaseError databaseError) {
  13. Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
  14. }
  15. };
  16. 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().

huangapple
  • 本文由 发表于 2020年9月23日 23:42:48
  • 转载请务必保留本文链接:https://go.coder-hub.com/64031599.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定