2017-11-22 25 views
0

私はAndroidベースのアプリケーションでFirebaseの初心者ですが、ListViewの場所を表示するのに成功しました。今度はアイテムをクリックすると場所を削除します。Firebaseデータベースから選択したアイテムを削除するには?

これは私の試みです:あなたは以下のようにしなければならないノード全体を削除したい場合は...

DatabaseReference dR = FirebaseDatabase.getInstance().getReference("place").child("autoKey"); 
       dR.removeValue(); 
dR. removeValue(); 

は、あなたがする必要がある

listPlace.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, final View view,final int position, long id) { 

    final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(EndroitActivity.this); 
     dialogBuilder.setTitle("Delete!"); 
     dialogBuilder.setPositiveButton("Yes...", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Place p = list.get(position); 
       System.out.println(p.getNomPlace()); 

       DatabaseReference dR = FirebaseDatabase.getInstance().getReference("place").child(p.getNomPlace()); 
       dR.removeValue(); 
      } 
     }).setNegativeButton("No", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         Toast.makeText(getApplicationContext(), "Fine, ya coward." 
           , Toast.LENGTH_SHORT).show(); 
        } 
       }); 

     dialogBuilder.create().show(); 

     return true; 
    } 
}); 

Database structure

+0

あなたのデータベース構造を共有してください。 –

+0

私の質問が更新されました –

+0

'nomPlace'フィールドだけを削除しましたか? –

答えて

0
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
Query applesQuery = ref.child("place").orderByChild("nomPlace").equalTo(p.getNomPlace()); 
applesQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    for (DataSnapshot appleSnapshot: dataSnapshot.getChildren()) { 
     appleSnapshot.getRef().removeValue(); 
    } 
} 

@Override 
public void onCancelled(DatabaseError databaseError) { 
    Log.e(TAG, "onCancelled", databaseError.toException()); 
} 
}); 
1

p.getNomPlace()autoKeyに置き換えてください。特定のノードautoKeyからノード全体が削除されます。 getUid()はautokeyを提供できます。

+0

返信いただきありがとうございますので、 '.child(" autoKey ")'を '.child(getUid())'に置き換えてください。 –

0

Firebaseデータベースからレコードを削除するには、参照で直接removeValue()メソッドを使用するだけです。リスナーとしてはまったく使用する必要はありません。だから、特定の場所を削除するには、次のコードを使用してください:placeIdは、削除する特定の場所のIDです

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
rootRef.child("place").child(placeId).removeValue(); 

します。注:placeIdgetUid()またはユーザーIDと同じではありません。そのIDを取得するには、あなたは一意のキーは次のようにpush()メソッドを使用していることを生成する瞬間にgetKey()メソッドを使用する必要があります。

String placeId = rootRef.child("place").push().getKey(); 

このplaceIdたが、あなたはどのDatabaseReferenceでそれを使用することができます。

関連する問題