当数据来自 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 中删除重复项的方法。