2012-04-18 2 views
1

У меня есть то, что я считал простой проблемой дизайна пользовательского интерфейса Android, но я пару раз ездил по кругу. У меня есть служба REST, с которой я загружаю XML и отображаю XML в форме в приложении для Android. У меня есть веб-страница, и я имитирую это с помощью андроида, с теми же параметрами, теми же URL-адресами, которые отправляются в службу REST, независимо от того, являются ли они андроидом или веб-страницами. В HTML можно легко создать флажок группу и RadioButton/выпадающие для различных элементов ID/дисплея, так, например, я могу отобразить опцию планеты, как:AlertDialog vs Spinner vs ListView

<select name="planet"><option value="0">Mercury</option></select> 

Я хотел сделать что-то подобное в андроиде, где я был пара значений, один идентификатор, а другой - удобный текст для отображения. Поэтому я решил создать адаптер с помощью android.util.Pair:

public class PairView extends Pair<String, String> { 
    public PairView(String first, String second) { 
     super(first, second); 
    } 

    public String toString() { 
     return second; 
    } 
    } 

    public class PairAdapter extends ArrayAdapter<PairView> { 
    } 

Так что теперь я могу поставить мой идентификатор в pair.first и что для отображения пользователю в pair.second.

Моя проблема заключается в том, что некоторые из этих параметров будут однодисковыми, а некоторые будут мультивыборными. В html это не проблема, просто используйте группу флажков для нескольких, а также переключатели/выпадающие списки для отдельных выборок. Однако в андроиде это не так прямолинейно. Я пробовал использовать Spinners для адаптеров, но Spinner, кажется, допускает только один выбор. AlertDialog.Builder позволяет выбирать один и несколько вариантов, но, с любопытством, я не вижу возможности использовать адаптер для многоэкранного выбора, только для одного выбора.

Я предполагаю, что я действительно хочу, это последовательный поиск всех моих опций, с помощью переключателей, отображаемых для отдельных выборов, и флажков, отображаемых для нескольких выборов, через адаптер, чтобы я мог получить идентификатор из пары для выбранных элементов.

Какой подход следует использовать? Пользовательский счетчик с добавленным кодом для нескольких вариантов? AlertDialog.Builder и каким-то образом использовать адаптер для нескольких вариантов? Просто создайте простое оповещение и оберните ListView в нем? Другой вариант, который (надеюсь) проще?

Я чувствую, что мне не хватает чего-то очень простого здесь.

ответ

1

У меня была подобная ситуация в приложении, которое я делал, и делился тем, что я выбрал. У меня были разные вопросы и в зависимости от того, что я удалил и добавил в свою деятельность. Для переключателей, которые я использовал с элементами в нем. Для вопросов с множественным выбором я хотел получить представление на основе флажка, поэтому я добавил пустое место в свой макет и в код добавил CheckBox (s) к нему.

Что касается заголовка и значения, для переключателей и флажков вы можете установить отображаемый текст с помощью setText и добавить любой объект/значение в качестве тега. Так что я использовал, чтобы сделать что-то вроде этого:

CheckBox option = new CheckBox(MyActivity.this); 
option.setText("Option 1"); 
option.setTag(10); 

Позже, когда вы получите выбранный вариант, вы можете просто получить свой тег и использовать его значение.

Это всего лишь один из способов сделать это, который я нашел простым. Надеюсь, это поможет

+0

Я думаю, что это поможет мне. Спасибо за подсказку, я не знал о SetTag, использование этого должно упростить для меня вещи. – mvsjes2

+0

Будьте осторожны с setTag ... люди любят java, потому что это строго типизированный язык. методы, возвращающие объект, запрашивают проблемы. –