Ich habe einen RecyclerView mit einigen Aufgaben. Aufgabe hat einige TextViews und Buttons. Ich habe eine Löschtaste und wenn ich sie drücke, zeige ich einen Dialog, um das Löschen zu bestätigen. Wenn der Benutzer "Löschen" drückt, lösche ich die Aufgabe und zeige eine Snackbar mit UNDO-Taste. Aber wenn ich versuche, meine Snackbar in onBindViewHolder zu zeigen, heißt es „kann Symbol nicht auflösen 'Show'. Kann nicht bekommen, was falsch ist. Bitte helfen.kann keine Snackbar zeigen
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {
Item item = items.get(viewHolder.getAdapterPosition());
if (item.isTask()) {
final Task task = (Task)item;
TaskViewHolder taskViewHolder = (TaskViewHolder)viewHolder;
viewBinderHelper.bind((SwipeRevealLayout)taskViewHolder.view, task.getId());
taskViewHolder.title.setText(task.getTitle());
taskViewHolder.time.setText(Utils.getTime(task.getDate()));
taskViewHolder.delete_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Delete this task?");
builder.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int pos = viewHolder.getAdapterPosition();
String key = Utils.getDate(task.getDate());
removeItem(pos);
used_dates.put(key, used_dates.get(key) - 1);
if (!getItem(pos - 1).isTask() && used_dates.get(key) == 0) {
removeItem(pos - 1);
used_dates.put(key, null);
}
}
Snackbar snackbar = Snackbar
.make(layout, "Task is deleted", Snackbar.LENGTH_SHORT)
.setAction("UNDO", new View.OnClickListener() {
@Override
public void onClick(View v) {
currentTaskFragment.addTask(task);
}
});
snackbar.show(); //Cannot resolve symbol 'show'
});
builder.setNegativeButton("Cansel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
viewBinderHelper.closeLayout(task.getId());
dialog.cancel();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
}
else {
Separator separator = (Separator)item;
SeparatorViewHolder separatorViewHolder = (SeparatorViewHolder)viewHolder;
separatorViewHolder.date.setText(Utils.getDate(separator.getDate()));
}
}
Sie geschlossen haben die 'onClick()' m Ethod zu früh. Bewege das '}' direkt über der 'Snackbar snackbar = ...' Zeile nach 'snackbar.show();'. –
@MikeM. omg so blöder Fehler ... Danke! –