我正在开发一个应用程序,用户需要为车辆选择Year,Make和Model。当用户选择年份时,将填充品牌列表以仅包括该年份存在的品牌,并且一旦选择品牌,则根据年份和品牌填充模型列表。
我最初使用过Spinners,但问题是Android Spinner不会让你有一个空的初始选择,我不想加载make和model直到选择一年。我也不想在列表中包含不是一年的项目。
Theres也是Spinners的一个问题,当Spinner被初始化时会调用onItemSelected(),因此很难确定系统是在选择项目,还是用户正在选择项目。我只是在用户选择项目后才加载Makes。我尝试重写onItemSelected并使用自定义适配器,但每次用户选择一个项目时,该方法都会被调用两次,这对我来说似乎很奇怪。我提出的任何解决方案看起来都像是黑客,并且不会感觉很好。
我在网上看了很多,但没有找到任何解决方案。
有没有办法让Spinner在这种情况下工作,还是有更好的设计可以用于此?
答案 0 :(得分:2)
“Spinners”或下拉菜单在使用鼠标的网页上比使用手指在移动设备上工作更好......
你说用户先选择一年,让用户先选择制作会不是更好?可以肯定的是,它通常是如何完成的,但是,也许您可以使用AutoCompleteTextView以便用户可以键入make(不必从十亿个品牌的列表中选择它),它将缩小选择范围基于打字。
对于模型,你可以做同样的事情,然后在今年,让他们进入年份...让一个小键盘出现(<EditText android:inputType="number" ... />
)并且它对用户来说会快得多而不是从旋转器中60年的名单中找到年份。
答案 1 :(得分:0)
我没有尝试过任何代码来测试这个,但我最初的想法是解决这个问题,并且仍然提供你想要的旋转器解决方案,用一个虚拟值填充Make和Model微调器并隐藏它们。然后,当用户选择年份时,在数据存储区中查询相关数据,重新填充“制作”微调器并使其可见。然后对Model微调器重复相同的操作。如果用户返回并在Year微调器或Make微调器中更改其初始选择,您还需要隐藏它们。