2017-09-19 26 views
0

TextViewのアラートダイアログとオプション付きリストを作成しました。ユーザーはリストから1つの項目を選択するか、またはEditTextで新しい項目を追加することができます。リスト項目をクリックするとAlertDialogを非表示にします

問題は、alertDialogが、ボタンを新規追加するときだけ非表示になり、リスト内の項目をクリックしないときには非表示になります。

final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    final LayoutInflater inflater = getLayoutInflater(); 
    final View dialogGroup = inflater.inflate(R.layout.select_group_layout, null); 
    final EditText newGroup = dialogGroup.findViewById(R.id.new_group); 
    final ListView listView = dialogGroup.findViewById(R.id.groups_list); 


    listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list)); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      HelperTools.showInfo("Selected group: " + ((TextView) view).getText(), getClass()); 
     } 
    }); 

    builder.setView(dialogGroup) 
      .setTitle(R.string.departments_txt) 
      .setPositiveButton("Añadir", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        contactDepartment = newGroup.getText().toString(); 
        HelperTools.showInfo("Selected group: " + contactDepartment, getClass()); 
       } 
      }); 

    if (list.size() != 0) { 
     builder.create(); 
     builder.show(); 
    } 

ListViewアイテムを選択したときにAlertDialogを非表示にするにはどうすればよいですか?

ありがとうございました。

EDIT

ファイナルコード:

final AlertDialog builder = new AlertDialog.Builder(this).create(); 
    final LayoutInflater inflater = getLayoutInflater(); 
    final View dialogGroup = inflater.inflate(R.layout.select_group_layout, null); 
    final EditText newGroup = dialogGroup.findViewById(R.id.new_group); 
    final ListView listView = dialogGroup.findViewById(R.id.groups_list); 


    listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list)); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      HelperTools.showInfo("Selected group: " + ((TextView) view).getText(), getClass()); 
      builder.dismiss(); 
     } 
    }); 

    builder.setView(dialogGroup); 
    builder.setTitle(R.string.departments_txt); 
    builder.setButton(Dialog.BUTTON_POSITIVE, "Añadir", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int i) { 
      contactDepartment = newGroup.getText().toString(); 
      HelperTools.showInfo("Selected group: " + contactDepartment, getClass()); 
     } 
    }); 

    if (list.size() != 0) { 
     builder.show(); 
    } 
+1

追加 "(却下)" を選択した項目のためのあなたのonClickリスナーへ。ダイアログを閉じる必要があります。 – Devsil

+0

それは動作しません。私はそれを試み、builder.hide()は何も動作しません。 –

答えて

2

追加builder.dismiss()。リストビューで項目をクリックした後

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 
     HelperTools.showInfo("Selected group: " + ((TextView) view).getText(), getClass()); 
     builder.dismiss(); 
    } 
}); 

EDIT

ダイアログ

をキャンセルするには
builder.show(); 

ダイアログを表示するには、この

final AlertDialog builder = new AlertDialog.Builder(this).create(); 

ようAlterDialogを作成します。

+0

シンボルメソッドdismiss()を見つけられません –

+0

またはdialog.cancel()..それは動作するはずです – Anonymous

+0

alertDialog.builder..Insteadダイアログを作成して使用しないでください。 – Anonymous

0

あなたは画面から削除、このダイアログを閉じDialog.dismiss()

dismiss() を使用することができます。代わりに、このコードの

AlertDialog dialog=builder.create(); 
          //then put dialog.dismiss() to 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 
     HelperTools.showInfo("Selected group: " + ((TextView) view).getText(), getClass()); 
     if (dialog.isShowing()){ 
      dialog.dismiss(); 
     } 

    } 
}); 
+0

シンボルメソッドdismiss()を見つけることができません –

+0

@JacinMontavaは更新されたansを確認します –

+0

更新 'ans'? Androidスタジオ? –

0

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 
     HelperTools.showInfo("Selected group: " + ((TextView) view).getText(), getClass()); 


    } 
}); 

使用このコード:

builder.setSingleChoiceItems(list, position, new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int position) 
      { 
       // do something 
       dialog.dismiss(); 
      } 
     }); 
+0

互換性のないタイプ:BuilderはAlertDialogに変換できません –

+0

更新された回答を確認してください –

関連する問題