Я пишу музыкальный проигрыватель, в котором используется пользовательский адаптер, расширяющий BaseAdapter (адаптер эффективности), который я хочу отобразить в AlertDialog
, используя setAdapter ()
, где пользователь может щелкнуть либо на одной из песен, чтобы переключиться на эту позицию в списке воспроизведения ИЛИ отметьте песни, которые нужно удалить из списка воспроизведения. Я попытался использовать пользовательский прослушиватель кликов, чтобы пользователь мог просто долго щелкнуть, чтобы удалить элемент из списка, но просмотр списка
просто не работает правильно ... он удалял неправильные элементы (те, что в конец), хотя ArrayList
содержал правильные элементы списка воспроизведения ... (когда я удалил элемент из ArrayList
, я передал его адаптеру, который вызвал notifyDataSetChanged
... но это не сработало, как я уже говорил. Определенно, есть ошибка в AlertDialog ListView
... потому что нет никаких причин для того, чтобы он отбрасывал результаты с конца, а не с правильного элемента.
Итак ... следующий метод Я хотел бы попытаться использовать метод setMultiChoiceItems ()
метода AlertDialog
... но похоже, что он не работает с пользовательским адаптером ... только простые массивы , Придется ли создавать подклассы AlertDialog
и Переопределить
метод setMultiChoiceItems ()
или есть способ заставить его работать с ArrayAdapter
?
По сути, я не могу понять, как даже выполнить итерацию списка, который создает AlertDialog
, или даже как-то пропустить это представление. Кроме того, я не Не думаю, что я могу даже прослушивать щелчки на флажках
, если я добавлю их в строку. Любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ: Задавать вопросы здесь, как волшебство ... Я ответил на свой собственный вопрос ... Вот как я это сделал. Я добавил подсказку к каждому флажку
, который является позицией элемента в ArrayList
. Затем я использовал OnCheckedChangeListener
для захвата выборов. Когда вы устанавливаете подсказку, он добавляет текст к флажку
... так как фон 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);
}
});