如何将setMultiChoiceItems()与使用效率arrayadapter的Custom AlertDialog一起使用?

and*_*rkz 7 android android-alertdialog

我写一个使用扩展BaseAdapter(效率适配器),我想在显示自定义适配器音乐播放器AlertDialog使用setAdapter(),用户可以在无论是在歌曲之一单击切换到播放列表中的那个位置或检查的歌曲从删除播放列表.我尝试使用自定义单击侦听器,以便用户可以长时间单击以从列表中删除该项目但是listview正常工作不正确...它正在删除错误的项目(最后的项目),即使ArrayList包含正确的播放列表项目...(当我从中删除项目时ArrayList,我将其传递给调用的适配器notifyDataSetChanged...但是我刚才提到的那个工作没有用.确实有一个错误AlertDialog ListView...因为它没有理由从结束而不是正确的项目中弹出结果.

所以...我想尝试的下一个方法是使用...的setMultiChoiceItems()方法,AlertDialog但它似乎不适用于自定义适配器...只有简单的数组.请问我要继承AlertDialogOverridesetMultiChoiceItems()方法还是有办法,我可以把它与工作ArrayAdapter

基本上,我无法弄清楚如何迭代AlertDialog创建的列表或者甚至以某种方式传递该视图.另外,checkboxes如果我将这些添加到行中,我认为我甚至不能听取点击.任何帮助将不胜感激.

编辑:在这里提出问题就像魔术一样......我回答了自己的问题......这就是我做到的.我添加了一个提示,每个checkbox项目的位置ArrayList.然后我习惯OnCheckedChangeListener捕捉选择.当您设置提示时,它会向checkbox... 添加文本,因为背景AlertDialog为白色(即使对于单击的项目?)我只是将提示文本颜色设置为透明.

holder.check.setHintTextColor(Color.TRANSPARENT);
holder.check.setHint(String.valueOf(position));
holder.check.setOnCheckedChangeListener(new OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {
        int position = Integer.parseInt((String) buttonView.getHint());
        Log.v("onCheckedChanged", "Checked: "+isChecked+" returned: "+position+" which should be "+getItem(position).name);                         
    }

});
Run Code Online (Sandbox Code Playgroud)

小智 3

参考这个这个

然后传递对 byte[] 的引用setMultiChoiceItems().

final boolean[] booleans = {false, true, false, true, false, false, false};
Run Code Online (Sandbox Code Playgroud)

booleans然后检查里面的值setPositiveButton().

如果您需要传递此AlertDialog值,请扩展AlertDialog并创建一个字段布尔值,如 1 中所述。