7

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

所以......我想尝试的下一个方法是使用......的setMultiChoiceItems()方法,AlertDialog但它似乎不适用于自定义适配器......只有简单的数组。我是否必须对方法进行子类化AlertDialog,还是有办法让它与.OverridesetMultiChoiceItems()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);                         
    }

});
4

1 回答 1

3

参考这个这个

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

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

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

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

于 2012-01-11T13:43:13.367 回答