Как закрыть AlertDialog, когда я нажимаю на элемент ListView - PullRequest
5 голосов
/ 22 января 2012

Вот мой код диалога, в диалоге есть ListView, я хочу закрыть это диалоговое окно, когда нажимаю ListView:

public void createSearchDialog(final String[] Memo){
        LayoutInflater factory = LayoutInflater.from(this);
        View searchView = factory.inflate(R.layout.seach_dialog, null);

            lv = (ListView) searchView.findViewById(R.id.search_list);
        lv.setAdapter(new MyPerformanceArrayAdapter(this, Memo, memo_PW));
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> arg0, View view, int position,long arg3) {
                // TODO Auto-generated method stub

                         /// close dialog
            }
        });


        searchBuilder = new AlertDialog.Builder(this);
        searchBuilder.setTitle("Search")
               .setView(searchView)
               .setNegativeButton("Back", new DialogInterface.OnClickListener() {               
                public void onClick(DialogInterface arg0, int arg1) {
                    // TODO Auto-generated method stub

                }
            })
               .show();     

    }

Я пытался поместить этот код в onItemClick()

    searchBuilder.create().dismiss();

    searchBuilder.create().cancel();

Но это не работает.

Ответы [ 3 ]

18 голосов
/ 22 января 2012

Измените .show() на dialog = searchBuilder.show();, затем установите dialog.dismiss() на onItemClick().

1 голос
/ 22 июня 2018

Полный код для этой задачи

 public void showDialog(){
    final AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
    dialog.setTitle("Choose App");
    dialog.setCancelable(true);

    View view = ((Activity)getContext()).getLayoutInflater().inflate(R.layout.custom_dialog_all_app, null);
    list = (ListView) view.findViewById(R.id.AllAppList);
    AllAppPckName = getPackages();
    AllAppListAdapter adapter= new AllAppListAdapter(getContext(), R.layout.app_item, AllAppPckName);

    list.setAdapter(adapter);

    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            appIcon.setVisibility(View.VISIBLE);
            appIcon.setImageDrawable(getPackageIcon(getContext(), AllAppPckName.get(i)));
            appNameBtn.setText(getAppNameFromPkgName(getContext(), AllAppPckName.get(i)));

            dialogg.dismiss();


        }
    });


    dialog.setView(view);
    dialogg = dialog.show();
}
1 голос
/ 22 января 2012

Для закрытия диалогового окна .dismiss() будет работать. Пожалуйста, проверьте, что вы звоните по этому адресу. если вы хотите закрыть диалоговое окно, когда выбор сделан из вашего ListView, вам нужно закрыть диалоговое окно в прослушивателе действий вашего ListView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...