Я храню данные пользовательских сообщений в базе данных Firebase в реальном времени и отображаю эти сообщения в виде списка. Я установил просмотр списка для прослушивателя нажатия кнопки, чтобы пользователь мог удалить его, если он / она хочет. Я использовал push(), поэтому случайный ключ генерируется, когда пользователь создает новое сообщение. Теперь не могу удалить. Я также пытался сделать этот ключ дочерним, но я не нашел способа его удалить. Любая помощь очень ценится.
Я хочу, чтобы этот «-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();
}
}
});
Чтобы удалить элемент в пользовательском узле, вам необходимо знать ключ этого элемента. Так, например, чтобы удалить элемент -LX5Db4_suS_wPjzRDLE, вам потребуется:
database.getReference("Donation Post").child(user.getUid()).child("-LX5Db4_suS_wPjzRDLE").removeValue();
Если элементы находятся в списке, и вы хотите удалить элемент, на который щелкнул пользователь, обычно у вас будет OnItemClickListener, и вашему OnItemClick будет сообщено положение элемента, на который щелкнул пользователь. Вам нужно будет сопоставить эту позицию с ключом, а затем запустить приведенный выше код.
Если вы используете Встроенный адаптер FirebaseUI для отображения элементов в ListView., вы можете получить ссылку на выбранный элемент, как показано здесь: Как удалить текущий выбранный элемент в ListView, который работает с FirebaseListAdapter?
В вашем вопросе нет кода, связанного с тем, как вы получаете элементы в представлении списка, поэтому в своем ответе я дал оба варианта. Если вы создали свой собственный адаптер, вам придется добавить способ сопоставления с позиции, на которую щелкнул пользователь, обратно на ключ. Если вы используете FirebaseUI, ответ, который я дал, показывает, как это сделать.
Спасибо, сэр, каким-то образом теперь я могу удалить его. Я извлекаю дочерний уникальный_ключ сообщения, щелкая сообщение в представлении списка, и использую этот ключ как ref.child(key).removeValue(), чтобы удалить его.
Спасибо, сэр, за ваше предложение, но я действительно хотел знать, как получить этот ключ «-LX5Db4_suS_wPjzRDLE», чтобы удалить его, когда пользователь щелкнет этот элемент из списка.