在我的Android应用程序中,我有一个包含类别名称的微调器(下拉列表)。 用户按名称选择一个类别,例如“食物和饮料”
这些类别包含在ArrayList categoryNamesArray
中还有另一个ArrayList categoryIDsArray,它包含类别ID整数。
两个匹配的排序,意味着类别1是汽车类别,它应该是。
当用户按名称选择类别时,我需要将类别ID发送到数据库。我怎么能这样做。
Subcategories变得更复杂,因为他们的ID以40-some开头。
其他信息:
我从服务器中取出ID并将它们放入arraylist中,然后从服务器中提取类别名称并将它们放入另一个arraylist中。然后将两个arraylists放在一个Object []中,并将它们传递给需要它们的活动
答案 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数据结构,您可以通过
获取相应的IDString chosenName; // user selects this
Integer id = categoryIDsArray.get(categoryNamesArray.indexOf(chosenName));
但是,如果您将代码更改为
,那将会非常好BiMap<Integer, String>
,它是一个双向地图,可让您从名称中获取ID,反之亦然。