关联Java中两个arraylists的项目

时间:2014-02-05 21:23:44

标签: java android arraylist

在我的Android应用程序中,我有一个包含类别名称的微调器(下拉列表)。 用户按名称选择一个类别,例如“食物和饮料”

这些类别包含在ArrayList categoryNamesArray

还有另一个ArrayList categoryIDsArray,它包含类别ID整数。

两个匹配的排序,意味着类别1是汽车类别,它应该是。

当用户按名称选择类别时,我需要将类别ID发送到数据库。我怎么能这样做。

Subcategories变得更复杂,因为他们的ID以40-some开头。

enter image description here

其他信息:

我从服务器中取出ID并将它们放入arraylist中,然后从服务器中提取类别名称并将它们放入另一个arraylist中。然后将两个arraylists放在一个Object []中,并将它们传递给需要它们的活动

2 个答案:

答案 0 :(得分:2)

您可以从Category类开始,作为主类别和子类别的基类

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和SubCategory。

此外,您可以简单地覆盖toString方法并使用列表中的直接对象,这样当用户选中该复选框时,您将拥有完整的对象供您使用。

答案 1 :(得分:1)

如果由于遗留或其他原因限制使用ArrayList数据结构,您可以通过

获取相应的ID
String chosenName; // user selects this
Integer id = categoryIDsArray.get(categoryNamesArray.indexOf(chosenName));

但是,如果您将代码更改为

,那将会非常好
  1. “类别”对象(由Eluvatar建议)或
  2. 一个BiMap<Integer, String>,它是一个双向地图,可让您从名称中获取ID,反之亦然。
相关问题