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

问题描述:

我正在写一个音乐播放器,使用扩展BaseAdapter的自定义适配器(效率适配器),我想要使用setAdapter()AlertDialog中显示,其中用户可以点击其中一首歌曲切换到播放列表中的该位置,或者选中要从播放列表中删除的歌曲。我尝试使用自定义点击侦听器,以便用户可以长按一下以从列表中删除项目,但listview只是不能正常工作......它删除了错误的项目(最后的那些),即使ArrayList包含正确的播放列表项目...(当我从ArrayList中删除该项目时,我将它传递给了名为notifyDataSetChanged的适配器...但是,这只是不起作用,因为我提到了这个。AlertDialog ListView ...因为没有理由从最后弹出结果而不是正确的项目如何将setMultiChoiceItems()与使用效率arrayadapter的Custom AlertDialog一起使用?

所以...我想尝试的下一个方法是使用AlertDialogsetMultiChoiceItems()方法...但它似乎不适用于自定义适配器......只有简单的阵列我必须继承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);       
    } 

}); 
+0

您的问题由您自己回答在您自己的问题上。尝试复制/粘贴文本并正确使用答案机制。 – Pabluez 2011-12-23 00:04:10

参考ThisThis

然后 传递引用为byte []在setMultiChoiceItems().

final boolean[] booleans = {false, true, false, true, false, false, false}; 

然后检查内部setPositiveButton().

booleans值。如果你需要传递这个AlertDialog左右,然后延伸AlertDialog并且已经创建了一个字段布尔值,如1所述。