android - 如何使用自定义 View 显示单选AlertDialog?

标签 android listview android-alertdialog

我需要使用单一选择来制作自定义 AlertDialog,但没有单选按钮,并且每个项目中有两个自定义 TextView。我尝试使用 AlertDialog:

ArrayList<HashMap<String,String>> items=new ArrayList<HashMap<String,String>>();
//..here I fill my ArrayList
SimpleAdapter simpleAdapter=new SimpleAdapter(this, items, R.layout.list_item, new String[] {"name","count"}, new int[] {R.id.name,R.id.count});

AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setSingleChoiceItems(simpleAdapter, -1, new OnClickListener() {
    @Override
    public void onClick(DialogInterface arg0, int arg1) {
        //Here I handle click
    }});
alert.show();

但点击项目后它不会关闭。为什么?我可以修复它吗?

或者,我尝试使用 Dialog:

ArrayList<HashMap<String,String>> items=new ArrayList<HashMap<String,String>>();
//..here I fill my ArrayList
SimpleAdapter simpleAdapter=new SimpleAdapter(this, items, R.layout.list_item, new String[] {"name","count"}, new int[] {R.id.name,R.id.count});

Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

View view=LayoutInflater.from(this).inflate(R.layout.items_list, null);
ListView listView=(ListView) view.findViewById(R.id.list_view);
listView.setAdapter(simpleAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        //Here I handle click
        dialog.dismiss();
    }});

dialog.setContentView(view);
dialog.show();

但是样式有问题,文本不显示(文本颜色与背景颜色一致)。

我认为 AlertDialog 最适合我。但如何制作呢?

最佳答案

But it doesn't close after click on item. Why? May be I can fix it?

AlertDialog.Builder.setSingleChoiceItems默认情况下,方法不会关闭对话框,因此您必须手动执行此操作。为此,您只需将 onClick 回调的 DialogInterface 参数(代表对话框本身)转换为 Dialog 并使用 dismiss()方法:

((Dialog) arg0).dismiss();

关于android - 如何使用自定义 View 显示单选AlertDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13555027/

相关文章:

java - 在java中如何合并两个不同大小的arraylist并制作一个新的Arraylist?

android - Jetpack Compose : Whats the difference between Modifier. heightIn(...) vs Modifier.prefferedHeigh(...)

java - 如何在显示对话框时仅单击“警报对话框”按钮

android - "Cannot draw recycled bitmaps"在附加到 Adapter 的 Gallery 中显示位图时

java - 在android中以编程方式添加到布局中时如何从许多EditText中获取数据

javascript - 如何制作在 AngularJS 中加载部分的列表和 GridView 切换开关控件?

android - Android中的两行ListView强制关闭

android - ListView 多选问题?

Android 警报对话框复选框文本

Android:在 AlertDialog Box 中设置编辑文本的边距