亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firebase removeValue() 函數未刪除正確的值

Firebase removeValue() 函數未刪除正確的值

慕田峪9158850 2023-09-06 15:02:41
我正在努力向我的應用程序添加編輯和刪除功能。編輯功能工作正常,但我的刪除功能并不總是刪除正確的值。刪除功能未按預期工作的情況:當我添加新的數據節點時(在我的應用程序中是新的供應商。)當我編輯某個值時,最后編輯的值將被刪除,而不是所選的值。啟動應用程序時,僅刪除其中一項就會刪除整個“供應商”。必須單擊刪除按鈕兩次才能刪除項目。這是我的數據庫的結構:供應商>>>=============> 自動生成密鑰(例如-LpmoJ8DjCvF23I2ymVg)=================================================== =====> 供應商名稱=================================================== =====> 供應商_地址=================================================== =====> 供應商_電話號碼=================================================== =====> 供應商_電子郵件為了刪除一個值,我獲取該項目的自動生成的鍵,并將其用作刪除該鍵的整個節點的參考。這在我的編輯功能中工作得很好,但在我的刪除功能中卻不起作用。我認為它必須與 onDataChange 做一些事情,但我不確定。注意:這些項目位于recyclerView中,用戶可以隨時編輯或刪除它們。我嘗試過移動 onDatachange 方法,將removeValue() 函數移動到不同的位置,并在使用它之前在 TextView 中設置鍵,以確保它是正確的鍵,但由于某種原因它不起作用有意刪除其他未選擇的項目。我已經被這個問題困擾了三天,因為我是這種編程的初學者,這是我的第一個完整的應用程序。如果您需要更多代碼,我可以根據需要發布盡可能多的代碼。任何幫助是極大的贊賞 :)。
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

我還沒有測試過代碼,嘗試掌握邏輯。有任何疑問歡迎


btnMenuDelete.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            final AlertDialog.Builder builder = new AlertDialog.Builder(SupplierMaintenance.this);

            builder.setTitle("DELETE Supplier");

            builder.setMessage("You are about to delete the selected supplier. Continue?");

            builder.setCancelable(false);

            builder.setNegativeButton("Yes", new DialogInterface.OnClickListener() {


                @Override

                public void onClick(DialogInterface dialog, int which) {


                    //DELETE METHOD

                    databaseSupp = FirebaseDatabase.getInstance().getReference("SUPPLIERS");

                    final DatabaseReference mDatabase2 = databaseSupp;


                    mDatabase2.addListenerForSingleValueEvent(new ValueEventListener() {

                        @Override

                        public void onDataChange(@NonNull final DataSnapshot dataSnapshot2) {


                            for (final DataSnapshot snapshot : dataSnapshot2.getChildren()) {

                                if (snapshot.child("Supplier_Name").getValue(String.class).equals(suppName.getText().toString())) {

                                    deletekey = snapshot.getKey().toString();

                                    keyholder.setText(deletekey);

               mDatabase2.child(keyholder.getText().toString()).removeValue();  

                                     return;

                                }

                            }

                        }

                        @Override

                        public void onCancelled(@NonNull DatabaseError databaseError) {


                        }

                    });

                }

            });


            builder.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {

                @Override

                public void onClick(DialogInterface dialog, int which) {

                }

            });

            builder.show();

            //DELETE METHOD END

        }

    });

我希望供應商名稱是唯一的


查看完整回答
反對 回復 2023-09-06
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號