Android 单击ListView项时如何关闭AlertDialog

Android 单击ListView项时如何关闭AlertDialog,android,android-alertdialog,alert,Android,Android Alertdialog,Alert,这是我的对话框代码,对话框中有一个ListView,我想在单击ListView时关闭此对话框: public void createSearchDialog(final String[] Memo){ LayoutInflater factory = LayoutInflater.from(this); View searchView = factory.inflate(R.layout.seach_dialog, null); lv =

这是我的对话框代码,对话框中有一个
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();     

    }

但是它不起作用。

用于取消对话框
。dismise()
将起作用。请检查您是否在适当的位置拨打此电话。如果要在从
列表视图
中进行选择时关闭对话框,则需要在
列表视图
的操作侦听器中关闭对话框

.show()
更改为
dialog=searchBuilder.show()然后将
对话框.dismise()
放入
onItemClick()

完成此问题的编码

 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();
}
public void showDialog(){
final AlertDialog.Builder dialog=新建AlertDialog.Builder(getContext());
对话框.setTitle(“选择应用程序”);
对话框。可设置可取消(true);
视图=((活动)getContext()).GetLayoutFlater().inflate(R.layout.custom\u对话框\u all\u应用程序,空);
list=(ListView)view.findViewById(R.id.allApplication);
AllAppPckName=getPackages();
AllApplicationAdapter=新的AllApplicationAdapter(getContext(),R.layout.app_项,AllAppPckName);
list.setAdapter(适配器);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
appIcon.setVisibility(View.VISIBLE);
setImageDrawable(getPackageIcon(getContext(),AllAppPckName.get(i));
appNameBtn.setText(getAppNameFromPkgName(getContext(),AllAppPckName.get(i));
dialogg.discouse();
}
});
对话框.setView(视图);
dialogg=dialog.show();
}

我放置了searchBuilder.create().disclose();进入onItemClick,但它仍然不起作用。您可以尝试使用searchbuilder.Disease()吗?我无法调用searchbuilder.Disease(),类型AlertDialog的方法Disease()未定义。默认情况下,Builderan AlertDialog会在单击按钮时自动关闭。初始化对话框的位置、类型和使用方法。。请给出正确的答案,代码为..AlertDialog;如果它是全球性的,那么它就会起作用
 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();
}