2014-02-05 25 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