我正在编写一个音乐播放器,它使用扩展 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);
}
});