无法显示小吃店

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方法中。然后再试一次。