当数据来自 mySQL 时,在 java 的 Spinner 中删除重复项
Removing duplicates in a Spinner in java when data comes from mySQL
我正在使用 hashsetList 为我的微调器创建一个没有重复的新列表,但是当我在微调器中添加它时 java 出现错误。当从 mySQL.
中显示重复项时,项目工作正常
这是我创建 hashsetList 之前 MainActivity.java 的摘录。
@Override
protected void onPostExecute(Void args) {
// Locate spinner1 in activity_main.xml
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
// Spinner adapter
spinner1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item,typesofjobs));
Collections.sort(typesofjobs);
当我添加以下 hashsetList 代码以消除重复项并 运行 它时,项目崩溃了。
@Override
protected void onPostExecute(Void args) {
// Locate spinner1 in activity_main.xml
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
Set<String> hashsetList = new HashSet<String>(typesofjobs);
// Spinner adapter
spinner1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item, (List<String>) hashsetList));
Collections.sort(typesofjobs);
我是把 hashsetList 放错地方了还是使用不当?我只是想用非重复版本替换 "typesofjobs" 。有没有更好的方法可以消除微调器重复项?
当您对列表使用 HashSet
删除重复项时,您走在了正确的轨道上。但是,当您尝试将此 Set
转换为 List
时犯了一个错误,这是行不通的。相反,在下面的代码中,我将根据您的作业列表创建的 LinkedHashSet
传递给 ArrayList
构造函数。生成的 List
将删除所有重复的 String
作业值。
@Override
protected void onPostExecute(Void args) {
// Locate spinner1 in activity_main.xml
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
List<String> typesofjobsunique = new ArrayList<>(new LinkedHashSet<>(typesofjobs));
spinner1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item, typesofjobsunique));
// not sure if you want to keep original list
Collections.sort(typesofjobs);
向 this great SO post 致敬,它讨论了从 Java List
中删除重复项的方法。
我正在使用 hashsetList 为我的微调器创建一个没有重复的新列表,但是当我在微调器中添加它时 java 出现错误。当从 mySQL.
中显示重复项时,项目工作正常这是我创建 hashsetList 之前 MainActivity.java 的摘录。
@Override
protected void onPostExecute(Void args) {
// Locate spinner1 in activity_main.xml
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
// Spinner adapter
spinner1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item,typesofjobs));
Collections.sort(typesofjobs);
当我添加以下 hashsetList 代码以消除重复项并 运行 它时,项目崩溃了。
@Override
protected void onPostExecute(Void args) {
// Locate spinner1 in activity_main.xml
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
Set<String> hashsetList = new HashSet<String>(typesofjobs);
// Spinner adapter
spinner1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item, (List<String>) hashsetList));
Collections.sort(typesofjobs);
我是把 hashsetList 放错地方了还是使用不当?我只是想用非重复版本替换 "typesofjobs" 。有没有更好的方法可以消除微调器重复项?
当您对列表使用 HashSet
删除重复项时,您走在了正确的轨道上。但是,当您尝试将此 Set
转换为 List
时犯了一个错误,这是行不通的。相反,在下面的代码中,我将根据您的作业列表创建的 LinkedHashSet
传递给 ArrayList
构造函数。生成的 List
将删除所有重复的 String
作业值。
@Override
protected void onPostExecute(Void args) {
// Locate spinner1 in activity_main.xml
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
List<String> typesofjobsunique = new ArrayList<>(new LinkedHashSet<>(typesofjobs));
spinner1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item, typesofjobsunique));
// not sure if you want to keep original list
Collections.sort(typesofjobs);
向 this great SO post 致敬,它讨论了从 Java List
中删除重复项的方法。