Задать вопрос
@e-hot

Как сформировать массив рингтонов для их вывода в simple_list_item_single_choice?

Приветствую. Нужна ваша помощь, чтобы разобраться в следующей ситуации.

Ситуация:
пишу приложение ( API 28 ) для Android на Android Studio 3.1 для проигрывания рингтона на входящий звонок. Соответственно, пользователю пытаюсь в самом приложении вывести сначала в список с radio-выбором ( simple_list_item_single_choice.xml ) все имеющиеся в телефоне рингтоны. Нахватался в инете различных уроков и доков, но результата не получается.

Есть:
в activity_main.xml:
...
<ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/list_of_ringtones"
        />
...


в MainActivity:
...
private ListView listOfRingtones;
private List<Ringtone> ringtones;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listOfRingtones = (ListView)findViewById(R.id.list_of_ringtones);
        
        // получаем массив рингтонов
        ringtones = getRingtones(this); 

        // устанавливаем режим выбора пунктов списка
        listOfRingtones.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, ringtones,
                android.R.layout.simple_list_item_single_choice);

        listOfRingtones.setAdapter(adapter);
    }
...
public static List<Ringtone> getRingtones(Context context)
    {
        List<Ringtone> ringtones = new ArrayList<Ringtone>();
        RingtoneManager mgr = new RingtoneManager(context);
        mgr.setType(RingtoneManager.TYPE_RINGTONE);

        int n = mgr.getCursor().getCount();
        for(int i=0;i<n;i++){
            ringtones.add(mgr.getRingtone(i));
        }
        return ringtones;
    }
...


Android Studio реагирует на ringtones в:
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, ringtones, android.R.layout.simple_list_item_single_choice) метода onCreate( ... )

Вопрос:
по авто-подсказкам Android Studio не могу понять - надо что-то выбрать для ringtones или надо в методе public static List getRingtones(Context context) как-то иначе собирать и формировать массив рингтонов?

Спасибо.
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
ну она ж тебе человеческим языком пишет, что типы не совпадают. Туда надо передать int, а ты список передаешь. Хз, тут надо тебе прямо браться за ум и начинать думать.
Чтобы сразу наставить тебя на путь истиный, рекомендации такие - выкинуть ListView(это старое, неудобное, неочевидно работающее дерьмо мамонта. Все эти ArrayAdapter'ы - унылое говно, которое надо переписывать чуть только ты хочешь что-то посложнее сделать).
Берешь RecyclerView, берешь нормальный мануал, в коде адаптера будет чуть больше кода, чем ты привык.
Профит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы