2014-02-05 3 views
0

В моем приложении для Android у меня есть прядильщик (раскрывающийся список), который содержит названия категорий. Пользователь выбирает категорию по имени, скажем, «Еда и напитки»Сопоставление элементов из двух arraylists в Java

эти категории содержатся в ArrayList categoryNamesArray

есть другой ArrayList categoryIDsArray, который содержит идентификатор категории целых чисел.

Заказ для обоих матчей, что означает категорию 1, относится к категории Автомобили, которой она должна быть.

Мне нужно отправить идентификатор категории в базу данных, когда пользователь выбирает категорию по имени. Как мне это сделать.

Это сложнее с подкатегориями, потому что их идентификаторы начинаются с 40-то.

enter image description here

Дополнительная информация:

Я тяну идентификаторы с сервера и поместить их в ArrayList, то я тяну имена категорий с сервера и поместить их в другой ArrayList. Затем поместите два arraylists в один Object [] и передайте их в нужную ему деятельность

+1

звучит так, как будто вы должны создать объект Category и иметь массив из тех, которые затем выбирает пользователь. – Eluvatar

+0

звучит многообещающе, можете ли вы нарисовать пример? –

+0

Почему для получения идентификатора и имени в разных arraylist? –

ответ

1

Если вы по наследству или по какой-либо другой причине ограничены структурой данных ArrayList, вы можете получить соответствующий идентификатор, выполнив

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

Но это будет очень лучше, если вы измените код, чтобы иметь либо

  1. «категорию» объект (как это было предложено Eluvatar), или
  2. BiMap<Integer, String> который является bidirectiona l, позволяющую вам получить идентификатор от имени, и наоборот.
+0

Я не ограничиваюсь ничем, у меня просто нет достаточных знаний и опыта Java, и я работаю с тем, что знаю. –

+0

Вы можете представить примеры для очень лучших решений? –

+0

Примеры? Не сейчас с головы. Но, поскольку идентификатор, очевидно, имеет взаимно однозначное соответствие с именем категории, карта является естественной структурой данных для поддержания соответствия. Кроме того, в общем случае идентификатор и имя могут не оставаться в одном и том же индексе. например 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

Смежные вопросы