众多安卓下拉框控件

3
我正在设计一个“得分输入”应用程序,基本上它会列出给定日期的所有比赛(这可能是每天从几个到几百场不等),并为得分输入进行记录。每场比赛显然有两个分数(分别为每个团队)。我当然要使用Android Spinner进行得分选择,以0-30为每个团队得分填充。列出的每场比赛都有一个唯一的ID(从MySQL数据库中获取),这就是我用作每个Spinner ID的东西。
我的问题在于:我为每场比赛创建了所有Spinner(我们将其称为spinner1 [用于第一支队伍]和spinner2 [用于第二支队伍])。它们都同时列在应用程序中(由于游戏结束的时间不同,这是必须的)。当我测试哪个Spinner Id已经被选中时,它总是返回相同的Id,这意味着当我将Spinner数据发送回PHP进行解码和更新数据库时,它将更新相同的游戏ID,这对我没有任何帮助。
我真正想做的是为每个Spinner创建名称:“spinner1”+gameid,但据我所读,这是不可能的。当输入得分时,我需要正确的游戏ID被发送回来,而我的问题是每次通过创建Spinner的循环时,spinner1和spinner2没有唯一标识符。由于可能在某一天发生的游戏数量不同,它们必须动态创建。
有什么建议吗?

你可以在创建Spinner时使用类似于myspinner.setTag(thisgame)的标签。然后在发送/发布数据时,使用类似于thisgame = (vartype) myspinner.getTag();的代码来获取数据。 - MikeT
你能提供一个问题的 [mcve] 吗? - OneCricketeer
MikeT - 我从来没有考虑过标签,这可能有效-谢谢。 - cms659
cricket_007 - 我打算尝试MikeT的建议 - 如果我仍然无法做到我需要做的事情,我会告诉你。 - cms659
MikeT - 同样的问题类型 - 无论我是标记还是ID它 - 唯一监听器检测到的是“最后”游戏ID。理想情况下,我真正需要的是相当于:Spinner spinner1 [] = new Spinner; 在每个循环游戏中添加一个新的“数组”微调器,可以重复使用spinner1和spinner2作为微调器名称。无论如何现在必须停止一段时间 - 今天有很多雨天取消比赛 - 呃 - cms659
以下是屏幕的基本外观(这些是今天的实际比赛)-屏幕截图中只有几个,因为它是在滚动视图中设置的-我相信今天的游戏列表有56场比赛:[IMG]http://i66.tinypic.com/2a9zdpj.png[/IMG] - cms659
2个回答

0
谢谢你们的回复,我已经找到了答案。当我最终弄清楚时,真是个“傻呵呵”的时刻。之所以一直返回相同的游戏ID,是因为我一直通过下拉列表的名称来“询问”ID(例如,在给定游戏中,第一个队伍的下拉列表名称为spinner1)。当然,在循环创建所有我需要的下拉列表后,只有最后一个下拉列表(即spinner1)才会在监听器上有ID(我使用spinner1.getId()来获取得分变化时所使用的下拉列表的ID)。我将监听器更改为获取父级下拉列表而不是spinner1(即被点击的下拉列表将成为父级),并使用parent.getId()来确保返回正确的游戏ID。问题解决了。

0

从应用程序开始怎么样?

1)让应用程序请求一个最新的“仍需要得分的游戏”列表。

2)然后您选择要为其设置分数的游戏,这将发送您到一个新的活动(所有游戏都相同的模板...包含两个微调器,如果您愿意...不需要微调器ID...尽管您必须想出一种区分两个团队的方法...也许总是按字母排序)。

只需将游戏ID作为意图额外信息发送到新活动,并将分数发布到类似以下内容的位置:

http://yourwebsite.com/uploadscore.php?game=438765387262435&team1score=20&team2score=21

我也认为设置最大可选分数是一个坏主意...你永远不知道会发生什么。


“games-still-needing-scores”这个建议行不通——由于有时电话报分数的人会报错,需要访问当天所有比赛的信息才能进行更改。至于最大可选分数——它之所以设为30,是因为我们的公司已经成立了10年,从未超过这个限制——如果/当发生这种情况时,我会提高限制。 - cms659

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接