我的应用程序跟踪玩家如何玩耍。我为用户提供了以共享存储在sharedPreferences内的JSON数组中的'Player'对象形式保存多达50个玩家统计数据的选项。允许用户选择和加载其中一个玩家的方式已经证明是困难的。
一个alertDialog似乎很小,一个新的活动似乎有点过分,因为基本上只是一个大菜单,我担心将我的对象传递给它会很困难。 viewFlipper听起来很有趣,但我不知道它是否合适。
我应该怎么做呢?用几十个按钮填充屏幕真的是我想做的。
答案 0 :(得分: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 :(得分:1)
答案 2 :(得分:0)
我选择了ListView。它结合了自动完成的过滤和整理,但显示了名称,因此用户不必像ViewFlipper解决方案那样记住它们。
感谢这两个答案,他们都是很好的解决方案,帮助我找到了我需要的解决方案,结合了两者。
自动完成具有搜索的优势,因此我可以将用户可以保存的玩家数量扩展到我的内容,它看起来也很整洁但是不能轻易地看到整个列表对于扑克玩家来说是必要的,因为你给出的名字当你的笔记很少是你的同伴的名字,而不是基于他们的外表/演奏风格的袖口昵称。因此,使用自动完成功能,用户必须记住他们提供的昵称,超过50名玩家和可能相隔几个月的昵称会变得棘手。
Alek Gs的解决方案可以避免这个问题,但不适合大量的名字或长名称,因为按钮会偏离固定大小。