2015-10-30 46 views
0

我正在使用hashsetList爲我的微調項創建一個新的列表,但沒有重複,但是當我在Spinner中添加它時,java會給出錯誤。當從mySQL顯示重複項時,它的項目工作正常。當數據來自mySQL時,在Java中刪除Spinner中的重複項

這是我創建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」。有沒有更好的方法可以消除我的微調重複?

+0

什麼是你的錯誤輸出,你知道程序崩潰的確切路線嗎? –

回答

1

當您在列表中使用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動手清除重複。