Android:在AlertDialog中的多选ListView中选择项目

Android:在AlertDialog中的多选ListView中选择项目,第1张

概述我是Android开发的新手,并且在如何选择由alertdialog托管的列表视图中的某些项目时苦苦挣扎.在下面的代码中,lv.setItemChecked不起作用,因为listview尚未生成,所以我想知道是否有任何ListView或AlertDialog事件确认已生成视图.String[]values={"a","b","c"};ArrayAdapter<

我是Android开发的新手,并且在如何选择由alertdialog托管的列表视图中的某些项目时苦苦挣扎.在下面的代码中,lv.setItemChecked不起作用,因为ListvIEw尚未生成,所以我想知道是否有任何ListVIEw或AlertDialog事件确认已生成视图.

String [] values = {"a","b","c"};ArrayAdapter<String> adp = new ArrayAdapter<String>(this,androID.R.layout.simple_List_item_multiple_choice, values);ListVIEw lv = new ListVIEw(this);lv.setChoiceMode(ListVIEw.CHOICE_MODE_MulTIPLE);lv.setonItemClickListener(this);lv.setAdapter(adp);AlertDialog.Builder bldr = new AlertDialog.Builder(this);bldr.set@R_404_5979@("Select");bldr.setVIEw(lv);bldr.setPositivebutton("Done",    new DialogInterface.OnClickListener() {        @OverrIDe        public voID onClick(DialogInterface dialog, int which) {            handleDone();        }    });bldr.setNegativebutton("Cancel",    new DialogInterface.OnClickListener() {        @OverrIDe        public voID onClick(DialogInterface dialog, int which) {            handleCancel();        }    });final Dialog dlg = bldr.create();dlg.show();

没关系,我明白了.我在lv.setAdapter()调用之后立即调用lv.setItemChecked(0,true).一旦我在dlg.show()之后移动它,它就像一个魅力.

解决方法:

public class DialogoSeleccion extends DialogFragment {@OverrIDepublic Dialog onCreateDialog(Bundle savedInstanceState) { final String[] items = {"Español", "Inglés", "Francés"};    AlertDialog.Builder builder =            new AlertDialog.Builder(getActivity());    builder.set@R_404_5979@("Selección")       .setItems(items, new DialogInterface.OnClickListener() {            public voID onClick(DialogInterface dialog, int item) {                Log.i("Dialogos", "Opción elegIDa: " + items[item]);            }        });    return builder.create();}}

你会得到这样的东西:

如果要记住或显示最后选择的项,只需更改set setSingleChoiceItems()或setMultiChiceItems()的setItems方法.使用setSingleChoiceItems()很简单,只需传递其他参数(设置选择的索引,如果你不想设置,传递-1):

builder.set@R_404_5979@("Selección")  .setSingleChoiceItems(items, -1,           new DialogInterface.OnClickListener() {        public voID onClick(DialogInterface dialog, int item) {            Log.i("Dialogos", "Opción elegIDa: " + items[item]);        }    });

使用上面的代码片段,您将拥有类似的内容

如果你想要一个multichoose,你应该改变方法,第二个参数现在不是一个整数,应该是一个布尔数组,通过这种方式你将设置ID任何选项是否启用:

builder.set@R_404_5979@("Selección").setMultiChoiceItems(items, null,    new DialogInterface.OnMultiChoiceClickListener() {    public voID onClick(DialogInterface dialog, int item, boolean isChecked) {         Log.i("Dialogos", "Opción elegIDa: " + items[item]);   }});

结果将是这样的:

调用任何thre示例的方法是:

FragmentManager fragmentManager = getSupportFragmentManager();    DialogoSeleccion dialogo = new DialogoSeleccion();    dialogo.show(fragmentManager, "Tagseleccion");

如果您了解西班牙语,本指南将为您提供帮助:Complete guide for AlertDialogs或在GitHub获取完整示例

总结

以上是内存溢出为你收集整理的Android:在AlertDialog中的多选ListView中选择项目全部内容,希望文章能够帮你解决Android:在AlertDialog中的多选ListView中选择项目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存