我是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中选择项目所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)