Wenn Sie ListView verwenden, konnte ich problemlos ein Element aus dem Adapter löschen, indem Sie this.adapter.delete(mYeets.get(position))
schreiben. Gibt es mit RecyclerView ein Äquivalent? Oder meldet der Adapter einer Änderung alles, was ich jetzt tun muss?Entfernen eines Objekts aus RecyclerView
private void deleteComment(int position) {
String currentUserObjectId = ParseUser.getCurrentUser().getObjectId();
ParseQuery<ParseObject> query = new ParseQuery<>("Yeet");
query.whereEqualTo(ParseConstants.KEY_OBJECT_ID, mYeets.get(position).getObjectId());
query.whereContains(ParseConstants.KEY_SENDER_ID, currentUserObjectId);
query.findInBackground((yeet, e) -> {
if (e == null) {
for (ParseObject yeetObject : yeet) {
if (yeetObject.getParseObject(ParseConstants.KEY_SENDER_AUTHOR_POINTER).getObjectId().equals((ParseUser.getCurrentUser().getObjectId()))) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mContext);
dialogBuilder.setTitle("Delete");
dialogBuilder.setMessage("Do you want to delete this Yeet?");
dialogBuilder.setPositiveButton("Yes", (dialog, which) -> {
// Iterate over all messages and delete them
for (ParseObject delete : yeet) {
delete.deleteInBackground();
//this.adapter.delete(mYeets.get(position));
this.adapter.notifyDataSetChanged();
Toast.makeText(mContext, "Yeet deleted", Toast.LENGTH_SHORT).show();
}
});
dialogBuilder.setNegativeButton("No", (dialog, which) -> {
});
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
}
}
} else {
Log.e("Error", e.getMessage());
}
});
}
Sie müssen aus der Liste entfernen und dann notifydatasetchanged zum Adapter. –
'' delete.deleteInBackground(); '' wird die Daten entfernen. Ist das genauso wie das Entfernen vom Adapter? Oder gibt es einen anderen Befehl? Ich kann es nicht finden. – santafebound