2016-10-15 1 views
0

У меня есть кнопка, которая выбирает все проверенные флажки в ListView и показывает все отмеченные флажки в AlertDialog.для диалогового окна предупреждения о списке элементов массива

Я повторяю все элементы с помощью for-loop, и у меня есть положительная кнопка и отрицательная кнопка - и когда я нажимаю кнопку negativeButton, я хочу отменить все диалоги и вернуться к приложению.
Но вместо этого, когда я нажимаю отрицательную кнопку, она повторяется один за другим.

btnDialog = (Button) findViewById(R.id.btnDialog); 
btnDialog.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     StringBuffer responseText = new StringBuffer(); 
     //responseText.append("הפריטים שנבחרו הם: \n"); 
     Models models = new Models(); 
     //List<Models> modelList = new ArrayList<>(); 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 
     alertDialogBuilder.setTitle("Diet Product"); 
     responseText.append("הפריטים שנבחרו הם: \n"); 
     Log.d(responseText.toString(), msg); 

     for (int i = 0; i < (modelList.size()); i++) { 
      models = modelList.get(i); 
      if (models.isSelected()) { 
       alertDialogBuilder 
         .setMessage(responseText.append(models.getName() + " : " + models.getProtein() + "\n")) 
         .setCancelable(false) 
         .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           // if this button is clicked, close current activity 
           MainActivity.this.finish(); 
          } 
         }) 
         .setNegativeButton("No", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 

           dialog.dismiss(); 
          } 
         }); 
       AlertDialog alertDialog = alertDialogBuilder.create(); 
       alertDialog.show(); 

      } 
     } 

    } 
}); 
+1

Это не итерацию назад, он увольняет самый верхний диалог всех тех, которые вы открыли сразу –

+0

спасибо за ответа- так что вы предлагаете? Я пытаюсь использовать "dialog.cancel();" также, но он делает то же самое! – guydroid123

+0

Не ответ, просто комментарий. Я не знаю, как ответить, но я бы предложил попробовать не открывать много диалоговых окон в цикле –

ответ

1

Я считаю, что я пришел, чтобы решить эту проблему

 btnDialog = (Button) findViewById(R.id.btnDialog); 
     btnDialog.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       StringBuffer responseText = new StringBuffer(); 
       AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 
       alertDialogBuilder.setTitle("Diet Product"); 
       responseText.append("הפריטים שנבחרו הם: \n"); 

       for(int i=0;i<modelList.size();i++){ 
        Models models = modelList.get(i); 
        if(models.isSelected()){ 
         responseText.append("\n" + models.getName()+ " : "+models.getProtein() +"\n"); 
        } 
       } 

       alertDialogBuilder 
         .setMessage(responseText.append("\n"+"לחישוב ערכים לחץ המשך " +"\n"+"או חזור לעידכון פרטים"+ "\n")) 
         .setCancelable(false) 
         .setPositiveButton("המשך", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           // if this button is clicked, close current activity 
           //MainActivity.this.finish(); 
           Intent intent = new Intent(getApplicationContext(),ItemActivity.class); 
           intent.putExtra(models.getName(),"name"); 
           startActivity(intent); 
          } 
         }) 
         .setNegativeButton("חזור", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 

           dialog.cancel(); 
          } 
         }); 
       AlertDialog alertDialog = alertDialogBuilder.create(); 
       alertDialog.show();