2012-04-12 3 views
0

Мое приложение отслеживает, как игроки играют в покерной игре. Я предоставляю своим пользователям возможность сохранять до 50 игроков в виде объекта «Player», хранящегося внутри массива JSON в sharedPreferences. Предоставление пользователю возможности выбора и загрузки одного из этих игроков оказалось затруднительным.Как создать большой экран выбора?

ПредупреждениеDialog кажется маленьким, новое действие кажется немного за бортом за то, что по сути является просто большим меню, и я боюсь, что передача его объектов к нему окажется сложной. ViewFlipper звучит интересно, но я не знаю, подходит ли это.

Как мне это сделать? Наполнение экрана десятками кнопок - это все, что я хочу сделать.

ответ

0

я пошел с ListView. Он объединяет фильтрацию и порядок работы автозаполнения, но отображает имена, поэтому пользователям не нужно запоминать их, как решение ViewFlipper.

enter image description here

Спасибо за оба ответа, они оба хорошие решения, которые помогли мне прийти к решению я нуждался, который сочетает в себе два.

У автозаполнения было то преимущество, что я мог расширить количество игроков, которые пользователь может сохранить в моем сердце, он также выглядел аккуратным, но не мог легко увидеть весь список, который необходим игрокам в покер, поскольку имена вы дайте, когда титтинг ваших заметок редко совпадает с именами ваших соплеменников, но скорее с прозвищами манжеты, основанными на их внешности/стиле игры. Следовательно, используя автозаполнение, пользователь должен будет помнить прозвища, которые они дали, что более 50 игроков и, возможно, месяцы друг от друга оказались бы сложными.

Решение Alek Gs позволит избежать этой проблемы, но не подходит для большого количества имен или длинных имен, поскольку кнопки будут иметь фиксированные размеры.

2

Я согласен, что создание нового вида деятельности для этого было бы излишним. Один из способов решения этого вопроса - иметь GridView, заполненный вашими «кнопками», и пользователь будет выбирать один из сетки, щелкнув по нему. Вопрос в том, где/как отображать эту сетку.

ViewFlipper - отличный вариант, на мой взгляд. То, как вы бы идти о нем поместить существующий макет внутри вид плавника, затем положить GridView минуте ViewFlipper после существующего макета:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/flipper"> 

    <LinearLayout ...> 

     <!-- this is where your main layout goes --> 

    </LinearLayout> 

    <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/player_select" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" /> 
</ViewFlipper> 

Тогда в вашей деятельности настроить адаптер для вашей точки зрения сетки и OnItemClickListener - что-то делать, когда нажимается один элемент. Наконец, где-нибудь (либо в главном макете, либо в меню опций или в другом месте) вы можете отобразить это представление сетки. В коде обработчика для этого действия у вас есть что-то вроде

ViewFlipper flip = (ViewFlipper)flip.findViewById(R.id.flipper); 
flip.showNext(); 

Это эффективно скроет ваш основной макет и покажет сетку вместо этого. И в конце вашего OnItemClickListener вы будете иметь

ViewFlipper flip = (ViewFlipper)flip.findViewById(R.id.flipper); 
flip.showPrevious(); 

Это скрыть вид сетки и перейти обратно в основной раскладке. Не стесняйтесь добавлять любую анимацию, которая вам нравится для перехода (например, анимация флип 3G выглядит особенно приятной).

1

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

Скриншот из Google's tutorial:

enter image description here

Смежные вопросы