У меня есть приложение Android, которое извлекает с внешнего сервера имя и соответствующий идентификатор (это может быть комбинация из одного имени и идентификатора или несколько комбинаций идентификаторов имен), все они хранятся в HashMap<String, String>
- идентификатор как ключ и имя в качестве значения.
То, что я затем хотел бы реализовать, - это динамический Spinner, который заполняет себя «Именами» из этой HashMap, и когда пользователь выбирает одно из этих имен, параметр где-то, что я устанавливаю в номер ID. Этот идентификационный номер будет использоваться в последующих запросах к серверу.
Мой вопрос заключается в том, как лучше всего реализовать этот пользовательский Spinner из HashMap, чтобы при выборе этой опции где-то устанавливался идентификационный номер. Этот идентификационный номер должен быть доступен из нескольких действий - счетчик присутствует в нескольких различных действиях ... но должен иметь одинаковый эффект на каждом экране.
Шаблоны проектирования и псевдокод были бы очень благодарны. В данный момент Spinner находится на 2 разных экранах, вверху под панелью действий, но, очевидно, код находится в обоих файлах макета XML.
Приветствие.
EDIT
Код для установки имен и идентификаторов в HashMap:
// Returns a Map of blog name to blog ID associated with the authenticated user
public Map<String, String> extractBlogInfo(XMLDataExtracter blogData)
{
Log.d(TAG, "BlogOperations::extractBlogInfo()");
ArrayList<String> blogIDs = new ArrayList<String>();
ArrayList<String> blogNames = new ArrayList<String>();
Map<String, String> blogIDNamePairs = new HashMap<String, String>();
// Get ID and Names and store them in blogIDs and blogNames variables
if (blogIDs.size() == blogNames.size())
{
for(int i = 0; i < blogIDs.size(); i++)
{
blogIDNamePairs.put(blogIDs.get(i), blogNames.get(i));
}
}
else
{
// An error occured
Log.d(TAG,
"BlogOperations::extractBlogInfo() > An error occured - ID and Name array sizes do not match");
return null;
}
return blogIDNamePairs;
}