alertdialog listview取消选中

时间:2011-12-28 18:38:42

标签: android listview alertdialog uncheck

我使用ListView创建AlertDialog,并且适配器以编程方式具有元素CheckAll / UncheckAll元素。 这有效。但是当我通过触摸屏检查项目时,然后按下checkall,然后取消选中已选中的元素保持选中状态。

    DialogInterface.OnMultiChoiceClickListener coloursDialogListener = new DialogInterface.OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which,
                boolean isChecked) {

            ListView list = ((AlertDialog) dialog).getListView();
            long[] a = list.getCheckItemIds();
            if (which == 0) {
                if (isChecked) {
                    for (int i = 0; i < list.getCount(); ++i)
                        list.setItemChecked(i, true);
                } else {
                    for(int i=0;i<list.getCount();++i)
                        list.setItemChecked(i, false);
                }
                a = list.getCheckItemIds();//fucntion return empty array
                                    //but on screen checked element is Check.
                return;
            }
        }
    };

更新: 我发现bug发生的时候。 如果在功能

setMultiChoiceItems(CharSequence [] items,boolean [] checkedItems,DialogInterface.OnMultiChoiceClickListener listener)

我设置参数checkedItems,发生错误。如果我设置了checkedItems参数null bug就不会发生。 有什么想法吗?

更新:我在bugtracker google上打开了这个问题,因为更多数据显示here

1 个答案:

答案 0 :(得分:1)

getCheckItemIds() 不推荐使用此方法。改为使用getCheckedItemIds()。

http://developer.android.com/reference/android/widget/ListView.html