Java 如何创建一个大的选择屏幕?

Java 如何创建一个大的选择屏幕?,java,android,Java,Android,我的应用程序跟踪牌桌上的玩家如何玩。我给我的用户提供了一个选项,可以将最多50个玩家的统计数据以“玩家”对象的形式保存在SharedReferences的JSON数组中。事实证明,允许用户选择和加载其中一个播放器是困难的 alertDialog看起来很小,一个新的活动对于本质上只是一个大菜单来说似乎有点过火,我担心将我的对象传递给它会很困难。一个可视翻转器听起来很有趣,但我不知道它是否合适 我该怎么做呢?用几十个按钮填满屏幕是我真正想要做的。我同意为这项工作创建一个新的活动是一种过火的行为。解决

我的应用程序跟踪牌桌上的玩家如何玩。我给我的用户提供了一个选项,可以将最多50个玩家的统计数据以“玩家”对象的形式保存在SharedReferences的JSON数组中。事实证明,允许用户选择和加载其中一个播放器是困难的

alertDialog看起来很小,一个新的活动对于本质上只是一个大菜单来说似乎有点过火,我担心将我的对象传递给它会很困难。一个可视翻转器听起来很有趣,但我不知道它是否合适


我该怎么做呢?用几十个按钮填满屏幕是我真正想要做的。

我同意为这项工作创建一个新的活动是一种过火的行为。解决这一问题的一种方法是使用“按钮”填充
GridView
,用户可以通过单击从网格中选择一个按钮。问题是在何处/如何显示此网格

在我看来,ViewFlipper是一个不错的选择。方法是将现有布局放置在视图翻转器中,然后将GridView放置在现有布局之后的视图翻转器中:

<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>
这将有效地隐藏主布局并显示网格。在你的
监听器
的末尾

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

这将隐藏栅格视图并导航回主布局。您可以随意为过渡添加任何您喜欢的动画(例如,3G flip动画看起来特别好)。

我同意为过渡创建一个新的活动是一种过分的做法。解决这一问题的一种方法是使用“按钮”填充
GridView
,用户可以通过单击从网格中选择一个按钮。问题是在何处/如何显示此网格

在我看来,ViewFlipper是一个不错的选择。方法是将现有布局放置在视图翻转器中,然后将GridView放置在现有布局之后的视图翻转器中:

<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>
这将有效地隐藏主布局并显示网格。在你的
监听器
的末尾

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

这将隐藏栅格视图并导航回主布局。您可以随意为过渡添加任何您喜欢的动画(例如,3G flip动画看起来特别漂亮)。

尝试
自动完成文本视图。开始键入其中一个名称,然后弹出所有可能匹配项的列表

截图来自:


尝试一个
自动完成文本视图
。开始键入其中一个名称,然后弹出所有可能匹配项的列表

截图来自:

我和一个朋友去了。它结合了自动完成的过滤和整洁,同时还显示了名称,因此用户不必像ViewFlipper解决方案那样记住它们

感谢这两个答案,它们都是很好的解决方案,帮助我找到了我需要的解决方案,将两者结合起来

“自动完成”具有搜索的优势,因此我可以扩大用户可以保存到我心中内容的玩家数量,它看起来也很整洁,但不能很容易地看到整个列表,这对于扑克玩家来说是必要的,因为你在写笔记时给出的名字很少是你的同伴的名字,而是基于他们的外表/打牌风格的即兴昵称。因此,使用autocomplete,用户将不得不记住他们给的昵称,超过50名玩家和可能相隔数月的玩家将被证明是棘手的

Alek Gs解决方案可以避免这个问题,但不适合大量的名称或长名称,因为按钮的大小不固定。它结合了自动完成的过滤和整洁,同时还显示了名称,因此用户不必像ViewFlipper解决方案那样记住它们

感谢这两个答案,它们都是很好的解决方案,帮助我找到了我需要的解决方案,将两者结合起来

“自动完成”具有搜索的优势,因此我可以扩大用户可以保存到我心中内容的玩家数量,它看起来也很整洁,但不能很容易地看到整个列表,这对于扑克玩家来说是必要的,因为你在写笔记时给出的名字很少是你的同伴的名字,而是基于他们的外表/打牌风格的即兴昵称。因此,使用autocomplete,用户将不得不记住他们给的昵称,超过50名玩家和可能相隔数月的玩家将被证明是棘手的

Alek Gs解决方案可以避免这个问题,但不适合大量名称或长名称,因为按钮的大小不固定