单击按钮删除单个节点

Remove a single node on a click on the button

我正在尝试创建一个函数,在单击提交按钮后,我可以根据用户在 "TextField" 中的输入删除 "Restaurant Name"。

餐厅分为早餐、午餐和晚餐。

我尝试使用 remove() 函数,但它删除了早餐中的 所有内容 ,我在其中的所有数据的名称。

{
 "BibleVerse": "Verse1",
 "Breakfast": {
  "Name": {
   "-JyjnX_b6yQCR068oA9i": "firefly",
   "-Jyjn_5Wzr1vP5rXi_IG": "congee queen",
   "-JyjncESMv5vd2nQh4l6": "steakhouse"
  }
 },
 "Dinner": "Dinner",
 "Gathering": "Home",
 "Lunch": "Lunch",
 "NexcellMember": "Member1",
 "User": "Adrian"
}

这是我的 Java class,目前...我不知道如何使用从 Textfield 捕获的文本将其设置为从 Firebase 中删除,我只能删除整个数据集。

public class DeleteRestaurant extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.deleterestaurant);
        Firebase.setAndroidContext(this);
        Button DelRestNow = (Button) findViewById(R.id.delbutton);
        DelRestNow.setOnClickListener(Handler);
    }

    //Specific Button - Delete Restaurant Name
    View.OnClickListener Handler = new View.OnClickListener(){
        public void onClick(View v){
            DelData();
        }
    };

    public void DelData(){
        // GET and DELETE(Through Database Restaurant Name
        EditText mEdit = (EditText)findViewById(R.id.delText);
        String RestName = mEdit.getText().toString();
        // Get from Database
        Firebase ref = new Firebase("https://myfburl.firebaseio.com");
        ref.child("Breakfast/Name").removeValue();
        mEdit.setText("");
    }

}

您需要使用查询来查找所需的项目。在这种情况下,由于您要查找 value 与用户输入的字符串相匹配的项目,因此您需要使用 orderByValue():

EditText edit = (EditText)findViewById(R.id.delText);
final String name = edit.getText().toString();
Query query = mRef.child("Breakfast/Name").orderByValue().equalTo(name);
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot itemSnapshot : dataSnapshot.getChildren()) {
            itemSnapshot.getRef().removeValue();
        }
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});
edit.setText("");

我添加了一个 activity 来显示我的演示应用程序的实际效果:https://github.com/puf/firebase-Whosebug-android