2017-11-21 8 views
0

일부 작업이있는 RecyclerView가 있습니다. 작업에는 몇 가지 TextViews 및 단추가 있습니다. 나는 삭제 단추가 있고 그것을 누를 때 나는 삭제를 확인하는 대화 상자를 보여준다. 사용자가 "Delete"를 누르면 작업을 삭제하고 UNDO 버튼과 함께 Snackbar를 보여줍니다. 내가 onBindViewHolder 내 플로팅 작업을 표시 할 때 그러나 " '쇼'기호를 확인할 수 없습니다 말했다. 무엇이 잘못 가져올 수 없습니다. 제발 도와주세요.스낵바를 표시 할 수 없습니다.

@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())); 

     } 
    } 
+0

당신은 폐쇄 한'온 클릭()'m 너무 일찍부터. 'Snackbar snackbar = ...'줄 바로 위의'}'를'snackbar.show();'다음으로 이동하십시오. –

+1

@MikeM. 너무 바보 같은 실수 ... 고마워! –

답변

0

시도가

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(); 

또는

를 사용하는

그리고 당신은 show 방법 방법 onClick 외부 전화, 당신은 onClick 방법으로 이동 .And 다시 시도 할 수 있습니다.

+0

답변의 원래 부분이 잘못되었습니다. 'show()'메소드는 아무것도 반환하지 않습니다. –

+0

네. 알아. 내 코드를 테스트 해. 내가 바꿔. – KeLiuyue