我的应用程序跟踪玩家在扑克桌上的游戏方式。我让我的用户可以选择以“玩家”对象的形式保存多达 50 个玩家的统计数据,该对象存储在 sharedPreferences 中的 JSON 数组中。事实证明,允许用户选择和加载其中一个播放器是很困难的。
alertDialog 似乎很小,对于本质上只是一个大菜单的新活动似乎有点过火,我担心将我的对象传递给它会很困难。viewFlipper 听起来很有趣,但我不知道它是否合适。
我该怎么做呢?用几十个按钮填满屏幕是我真正想做的。
我同意为此创建一个新活动将是矫枉过正。解决此问题的一种方法是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 翻转动画看起来特别好)。
尝试一个AutoCompleteTextView
. 开始输入其中一个名称,然后会弹出所有可能匹配项的列表。
谷歌教程截图:
我选择了ListView。它结合了自动完成的过滤和整洁性,同时显示名称,因此用户不必像 ViewFlipper 解决方案那样记住它们。
感谢您的两个答案,它们都是很好的解决方案,帮助我找到了结合两者的解决方案。
自动完成具有搜索的优势,因此我可以将用户可以保存的玩家数量扩展到我心中的内容,它看起来也很整洁,但无法轻易看到整个列表,这对于扑克玩家来说是必要的,因为你在给你的标题命名时给出的名字笔记很少是你的同伴的名字,而是基于他们的外表/演奏风格的即兴昵称。因此,使用自动完成功能,用户必须记住他们给超过 50 名玩家和可能相隔数月的昵称会被证明是棘手的。
Alek Gs 解决方案将避免该问题,但不适合大量名称或长名称,因为按钮将不固定大小。