簡體   English   中英

當數據來自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與列表一起使用以刪除重復項時,您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);

這篇出色的SO文章的技巧提示,討論了從Java List刪除重復項的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM