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();
}