2016-02-09 32 views
1

我有活動,用戶可以選擇一些產品類別上的spinners。由於我有14個類別,爲了避免ScrollView開銷用戶可以動態添加spinners(最多14)到ScrollView。我的目標是避免所選項目中出現重複。例如:如果用戶選擇類別A,它必須從ArrayAdapter中刪除,並且不可用於選擇,如果用戶決定將類別A更改爲B,則必須再次提供A。什麼可能的解決方案?更新ArrayAdapter取決於微調項目選擇

UPDATE 我下面的想法

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      //Create temporary array list 
      ArrayList<String> tempArray = new ArrayList<>(); 
      //Go trough all spinners and add selected items to temp array list 
      for(int i =1001; i<categorySpinnerId-1; i++){ 
       tempArray.add(((Spinner)findViewById(i)).getSelectedItem().toString()); 
      } 
      //Remove from original array list items of temp array list 
      categoryArrayList.removeAll(tempArray); 
      categorySpinnerAdapter.notifyDataSetChanged(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 

但在這種情況下,我收到下面的問題。例如,用戶添加了5個spinners。第一名選手有14個選項,第二名13名(不包括首選),第三名12名(不包括第一名和第二名)等等。新創建的微調器選擇不會影響以前的微調器選項列表。

+0

你嘗試過這個東西。請提供您的代碼片段.. – ELITE

回答

0

使用動態數組,您可以在其中存儲所有未包含所選微調器條目的微調器條目。

例子:

全陣列:A, B, C, D, E

比方說,用戶挑選B

所以,你這樣做

for (String a : originalArray) { 
    if (!a.equals("B")) { 
     tempArray.add(a); 
    } 
} 

然後設置tempArray以微調視圖適配器。

0

使用HashSet它將不允許重複: `HashSet h = new HashSet(); h.add(「a」); h.add(「a」); h.add(「b」); h.add(「c」);

System.out.println(" sdsadsd="+h); ` 

檢查這個例子

link1

link2

+0

請附上示例鏈接 – burzakovskiy

+0

是啊請檢查編輯的答案 –