无法显示小吃店
can't show a snackbar
我有一个带有一些任务的 RecyclerView。 Task 有一些 TextViews 和 Buttons。我有一个删除按钮,当我按下它时,我会显示一个对话框来确认删除。如果用户按 "Delete" 我删除任务并显示带有 UNDO 按钮的 Snackbar。但是当我尝试在 onBindViewHolder 中显示我的 Snackbar 时,它说“无法解析符号 'show'。无法理解错误。请帮助。
@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()));
}
}
尝试使用
import android.support.design.widget.Snackbar;
Snackbar
.make(layout, "Task is deleted", Snackbar.LENGTH_SHORT)
.setAction("UNDO", new View.OnClickListener() {
@Override
public void onClick(View v) {
currentTaskFragment.addTask(task);
}
}).show();
或者
并且你在onClick
方法之外调用了show
方法,你可以将它移动到onClick
方法中。然后再试一次。
我有一个带有一些任务的 RecyclerView。 Task 有一些 TextViews 和 Buttons。我有一个删除按钮,当我按下它时,我会显示一个对话框来确认删除。如果用户按 "Delete" 我删除任务并显示带有 UNDO 按钮的 Snackbar。但是当我尝试在 onBindViewHolder 中显示我的 Snackbar 时,它说“无法解析符号 'show'。无法理解错误。请帮助。
@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()));
}
}
尝试使用
import android.support.design.widget.Snackbar;
Snackbar
.make(layout, "Task is deleted", Snackbar.LENGTH_SHORT)
.setAction("UNDO", new View.OnClickListener() {
@Override
public void onClick(View v) {
currentTaskFragment.addTask(task);
}
}).show();
或者
并且你在onClick
方法之外调用了show
方法,你可以将它移动到onClick
方法中。然后再试一次。