2014-02-05 41 views
0

在我的android應用程序中,我有一個包含類別名稱的微調(下拉菜單)。 用戶通過其名稱來選擇一個類別,說「食物和飲料」Java中兩個陣列列表的核心項目

這些類別中包含的一個ArrayList categoryNamesArray

還有另一種的ArrayList categoryIDsArray其中包含的類別ID的整數。

這兩個匹配的排序,意思是類別1是類別Automotive,它應該是。

當用戶按名稱選擇一個類別時,需要將類別ID發送到數據庫。我怎樣才能做到這一點。

對於子類別,它會變得更加複雜,因爲它們的ID從40開始。

enter image description here

附加信息:

我拉從服務器的ID,並把它們放在一個ArrayList,然後我拉類別名稱從服務器,把他們在另一個數組列表。然後將這兩個Array列表放到一個Object []中,並將它們傳遞給需要它們的活動。

+1

聽起來像你應該創建一個類別對象,並有一個用戶然後從中挑選的數組。 – Eluvatar

+0

聽起來很有希望,你能起草一個例子嗎? –

+0

爲什麼要在不同的數組列表中獲取ID和名稱? –

回答

1

如果您因爲遺留或某些其他原因而受限於ArrayList數據結構,則可以通過執行

String chosenName; // user selects this 
Integer id = categoryIDsArray.get(categoryNamesArray.indexOf(chosenName)); 

但是,這將是巨大的更好,如果你修改代碼,要麼

  1. A 「類」 對象(由Eluvatar的建議),或
  2. 一個BiMap<Integer, String>這是一個器Bidirectiona l地圖使您可以從名稱中獲取ID,反之亦然。
+0

我不限於任何東西,我只是沒有足夠的Java知識和經驗,我正在與我所知道的一起工作。 –

+0

你能否提供更好的解決方案的例子? –

+0

例子?現在還沒有脫離我的頭頂。但是,由於ID顯然與類別名稱具有一一對應的關係,因此地圖是保持對應關係的自然數據結構。此外,在一般情況下,ID和名稱可能不會保持在同一索引處。例如1 - >空字符串或null,2 - >第一類別名稱,3 - >第二個貓的名字,... –

2

那麼你可以使用類別類的基類兩種,主類別和子類別

public abstract class Category 
{ 

    String name; 
    String id; 
    // More common fields; 
} 

public class MainCategory extends Category 
{ 
//Main Category Specific extra variables and method implementations. 

} 

public class SubCategory extends Category 
{ 
//sub Category Specific extra variables and method implementations. 

} 

然後,只需使用ArrayList,因爲它可以採取MainCategory以及其他子類別開始。

此外,您可以簡單地覆蓋toString方法並使用列表中的直接對象,以便當用戶選擇複選框時,您將擁有完整的對象以供使用。

+0

很好的例子,應該工作。 – Eluvatar