Приложение “Тесты” андроид

165
14 октября 2017, 17:31

Есть LinkedHashMap, где ключ - это вопрос, а значение TreeMap, в котором ключи - это ответы, а значение bool(true ответ верный, false нет)

Дело в том, что количество ответов всегда разное. Не могу понять как реализовать создание кнопок под ответы.

Answer 1

Любые вью (в том чилсе и кнопки) можно создавать динамически и добавлять на экран программно. В вашем случае в xml можно определить контейнер для ответов (например вертикальный LinearLayout) и добавлять необходимое количество кнопок программно:

LinearLayout container = (LinearLayout) findViewById(R.id.container);
for (i = 0; i < answers.size(); i++) {
    Button btn = new Button(context);
    btn.setText(answers.get(i).text);
    btn.setTag(i);
    btn.setOnClickListener(onClickListener);
    container.addView(btn);
}

Обработчик нажатий на кнопки будет выглядеть примерно так:

View.OnClickListener onClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        switch ((int) v.getTag()) {
            case 0:
                // Выбран первый ответ
                break;
            case 1:
                // Выбран второй ответ
                break;
            ...
        }
    }
};

Этот способ может оказаться проще, чем использование List/RecyclerView за ненадобностью написания адаптеров. А, так как количество ответов обычно небольшое (3-5), то и преимущество переиспользования вью в этих списках не будет задействовано.

Answer 2

Советую реализовать ListView для таких целей. Всё, что касается неопределённого количества элементов (ToDoList и так далее) реализуется с помощью RecyclerView или ListView или подобных. Дело в том, что каждый такой список можно реализовывать в разном виде (это может быть меню, набор кнопок, галереи) и в него помещается не константное количество элементов. Если ответов в дереве немного - берите ListView по причине простоты. Для RecyclerView больше подойдёт задача в виде сообщений, галерей и так далее, где много элементов.

READ ALSO
Конвертировать из List&lt;Person&gt; в Map&lt;String, List&lt;Person&gt;&gt;

Конвертировать из List<Person> в Map<String, List<Person>>

Есть сущность PersonУ нее есть геттер getId()

190
Использование sharedPreferences

Использование sharedPreferences

есть приложение под android, в нем класс Sharedpref

148
Как создать &ldquo;базу данных&rdquo;? [требует правки]

Как создать “базу данных”? [требует правки]

Новичок, только начал изучать JavaОбъясните, пожалуйста, как создают базы данных в Java

191