2015-09-15 3 views
-1

У меня есть listView внутри окна popUp, и я хочу, чтобы, когда пользователь нажимает на элемент в списке, окно popUp автоматически закрывается. Любая идея, как я могу это сделать?Android - закрыть окно popUp

public void popUp(){ 
     final LayoutInflater layoutInflater = LayoutInflater.from(Record.this); 

     final View promptView = layoutInflater.inflate(R.layout.input_language, null); 
     final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(Record.this); 
     alertDialogBuilder.setView(promptView); 

     String[] languages = {"Arabic","Bulgarian","Catalan"}; 

     ListView list = (ListView) promptView.findViewById(R.id.inputlang); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, languages); 
     list.setAdapter(adapter); 

     list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, 
            long id) { 

       String from_language = ((TextView)view).getText().toString(); 
       Toast.makeText(getBaseContext(), from_language, Toast.LENGTH_LONG).show(); 

       // CLOSE POPUP WINDOW 
      } 
     }); 

     // setup a dialog window 
     alertDialogBuilder.setCancelable(false) 
       .setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           dialog.cancel(); 
          } 
         }); 

     // create an alert dialog 
     AlertDialog alert = alertDialogBuilder.create(); 
     alert.show(); 
    } 

ответ

2

Вы можете сделать это, изменив порядок инициализации диалога:

public void popUp(){ 
    final ListView promptView = new ListView(this); 
    final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
    alertDialogBuilder.setView(promptView); 
    // setup a dialog window 
    alertDialogBuilder.setCancelable(false) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 

    // create an alert dialog 
    final AlertDialog alert = alertDialogBuilder.create(); 

    String[] languages = {"Arabic","Bulgarian","Catalan"}; 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, languages); 
    promptView.setAdapter(adapter); 

    promptView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
           long id) { 

      String from_language = ((TextView)view).getText().toString(); 
      Toast.makeText(getBaseContext(), from_language, Toast.LENGTH_LONG).show(); 

      // CLOSE POPUP WINDOW 
      alert.dismiss(); 
     } 
    }); 

    alert.show(); 
} 
3

Поместите этот код после alert.show();

list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, 
            long id) { 

       String from_language = ((TextView)view).getText().toString(); 
       Toast.makeText(getBaseContext(), from_language, Toast.LENGTH_LONG).show(); 

       // CLOSE POPUP WINDOW 
alert.dismiss(); 
      } 
     });