java - 如何必须根据彼此排列列表
问题描述
我正在尝试创建一个登录表单,您可以在其中从微调器中选择一个项目,然后您需要在文本字段中输入正确的代码才能继续。这就是我得到的。
Spinner schoolList = findViewById(R.id.schoolList);
ArrayAdapter<String> schoolListAdapter = new ArrayAdapter<String>(CreateAccount.this, android.R.layout.simple_spinner_dropdown_item, schools);
schoolList.setAdapter(schoolListAdapter);
private String[] schools = new String[]{
"School 1",
"School 2,
"School 3"
};
private String[] schoolCodeArray = new String[] {
"password1",
"password2",
"password3"
};
我知道你可以检查一下 School 1 = password1 等等,但这个列表会很长,因此我正在寻找更好的方法。例如获取所选学校的索引并检查该索引是否等于 schoolCodeArray 中的索引并与文本字段中的内容匹配。我希望你明白我在找什么。我感谢所有帮助!
解决方案
如果您应该有两个微调器,一个用于学校,另一个用于密码,那么考虑项目的顺序也可能不同。让你的逻辑灵活。考虑以上创建一个HashMap
将学校视为密钥和密码作为值的地方。
HashMap<String, String> credentialMap = new HashMap<String, String>();
credentialMap.put("School 1","Password 1")
credentialMap.put("School 2","Password 2")
一旦用户从两个微调器中选择项目,然后在某些按钮操作上,您需要对其进行验证。要做到这一点
loginButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
if(credentialMap.containsKey(schoolSpinnerItem)){
if(credentialMap.get(schoolSpinnerItem).equals(passwordSpinnerItem)){
// Login success
}
else{
// Login failed
}
}
}
});
推荐阅读
- java - ActionListener 的问题
- r - R 并行包 - 在我的玩具示例中性能非常慢
- javascript - Socket.io - 防止触发多个事件
- c++ - C++中变量初始化位置的区别
- c - Visual Studio Community 2019 的新手问题:简单 C 项目中的错误代码 LNK2019 和 LNK1120
- java - Hibernate搜索模糊超过2
- c# - Azure Dev Ops 部署应用程序错误?
- excel - 移动两个相互依赖的 MS Excel 单元格
- javascript - 未捕获的类型错误:无法读取 Vuejs 中未定义的属性“推送”
- python - 它是 numpy 高级索引的错误吗?