0

我的应用程序跟踪玩家在扑克桌上的游戏方式。我让我的用户可以选择以“玩家”对象的形式保存多达 50 个玩家的统计数据,该对象存储在 sharedPreferences 中的 JSON 数组中。事实证明,允许用户选择和加载其中一个播放器是很困难的。

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

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

4

3 回答 3

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 翻转动画看起来特别好)。

于 2012-04-12T15:32:38.083 回答
1

尝试一个AutoCompleteTextView. 开始输入其中一个名称,然后会弹出所有可能匹配项的列表。

谷歌教程截图:

在此处输入图像描述

于 2012-04-12T15:41:50.577 回答
0

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

在此处输入图像描述

感谢您的两个答案,它们都是很好的解决方案,帮助我找到了结合两者的解决方案。

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

Alek Gs 解决方案将避免该问题,但不适合大量名称或长名称,因为按钮将不固定大小。

于 2012-04-18T10:35:25.163 回答