Удаление случайного 2-го дочернего элемента в базе данных Firebase в реальном времени, созданной с помощью push в Android Studio

Я храню данные пользовательских сообщений в базе данных Firebase в реальном времени и отображаю эти сообщения в виде списка. Я установил просмотр списка для прослушивателя нажатия кнопки, чтобы пользователь мог удалить его, если он / она хочет. Я использовал push(), поэтому случайный ключ генерируется, когда пользователь создает новое сообщение. Теперь не могу удалить. Я также пытался сделать этот ключ дочерним, но я не нашел способа его удалить. Любая помощь очень ценится.

Удаление случайного 2-го дочернего элемента в базе данных Firebase в реальном времени, созданной с помощью push в Android Studio

Я хочу, чтобы этот «-LX5Db4_suS_wPjzRDLE» удалялся только тогда, когда пользователь щелкнет этот пост из списка. Поскольку я использую это для отображения в истории сообщений пользователя, поэтому я могу получить только 1-го ребенка, используя getUid() для текущего пользователя.

Вот код, который я пробовал,

 FirebaseDatabase database=FirebaseDatabase.getInstance();
final DatabaseReference ref=database.getReference("Donation Post").child(user.getUid());

ref.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {

        if (task.isSuccessful()){
            Toast.makeText(UserPostHistoryActivity.this, "Post Deleted Successfully", Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(UserPostHistoryActivity.this, "Post Not Deleted!!!", Toast.LENGTH_SHORT).show();

        }
    }
});
0
0
213
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы удалить элемент в пользовательском узле, вам необходимо знать ключ этого элемента. Так, например, чтобы удалить элемент -LX5Db4_suS_wPjzRDLE, вам потребуется:

database.getReference("Donation Post").child(user.getUid()).child("-LX5Db4_suS_wPjzRDLE").removeValue();

Если элементы находятся в списке, и вы хотите удалить элемент, на который щелкнул пользователь, обычно у вас будет OnItemClickListener, и вашему OnItemClick будет сообщено положение элемента, на который щелкнул пользователь. Вам нужно будет сопоставить эту позицию с ключом, а затем запустить приведенный выше код.

Если вы используете Встроенный адаптер FirebaseUI для отображения элементов в ListView., вы можете получить ссылку на выбранный элемент, как показано здесь: Как удалить текущий выбранный элемент в ListView, который работает с FirebaseListAdapter?

Спасибо, сэр, за ваше предложение, но я действительно хотел знать, как получить этот ключ «-LX5Db4_suS_wPjzRDLE», чтобы удалить его, когда пользователь щелкнет этот элемент из списка.

Sarwar Alam Sajib 28.01.2019 01:58

В вашем вопросе нет кода, связанного с тем, как вы получаете элементы в представлении списка, поэтому в своем ответе я дал оба варианта. Если вы создали свой собственный адаптер, вам придется добавить способ сопоставления с позиции, на которую щелкнул пользователь, обратно на ключ. Если вы используете FirebaseUI, ответ, который я дал, показывает, как это сделать.

Frank van Puffelen 28.01.2019 02:05

Спасибо, сэр, каким-то образом теперь я могу удалить его. Я извлекаю дочерний уникальный_ключ сообщения, щелкая сообщение в представлении списка, и использую этот ключ как ref.child(key).removeValue(), чтобы удалить его.

Sarwar Alam Sajib 28.01.2019 04:09

Другие вопросы по теме