我目前正在使用AlertDialog.builder为用户创建多选列表(复选框).这很好用,除了我们想要其中一个按钮取消选择列表中的所有其他按钮.
builder.setMultiChoiceItems(list, checked,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog,
int item, boolean isChecked) {
if(item == ANY_ITEM_BUT_0)
{
((AlertDialog) dialog).getListView().setItemChecked(0, false);
}
}
});
Run Code Online (Sandbox Code Playgroud)
当使用"true"时它将成功检查该框,但是当使用false时它不会取消选中它(除非我手动将其手动设置为true.)是否有一个单独的监听器我应该用来检测用户何时单击这些?在我看来,有两个复选标记设置,一个由"setItemChecked(0,true);",一个通过实际选择它.
这已经让我疯了几天了,任何帮助都会非常感激.
我写一个使用扩展BaseAdapter(效率适配器),我想在显示自定义适配器音乐播放器AlertDialog使用setAdapter(),用户可以在无论是在歌曲之一单击切换到播放列表中的那个位置或检查的歌曲从删除播放列表.我尝试使用自定义单击侦听器,以便用户可以长时间单击以从列表中删除该项目但是listview正常工作不正确...它正在删除错误的项目(最后的项目),即使ArrayList包含正确的播放列表项目...(当我从中删除项目时ArrayList,我将其传递给调用的适配器notifyDataSetChanged...但是我刚才提到的那个工作没有用.确实有一个错误AlertDialog ListView...因为它没有理由从结束而不是正确的项目中弹出结果.
所以...我想尝试的下一个方法是使用...的setMultiChoiceItems()方法,AlertDialog但它似乎不适用于自定义适配器...只有简单的数组.请问我要继承AlertDialog和Override该setMultiChoiceItems()方法还是有办法,我可以把它与工作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)