Android - чтение общих данных между действиями с использованием Spinner - PullRequest
0 голосов
/ 18 марта 2011

У меня есть приложение 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;
    }

1 Ответ

1 голос
/ 18 марта 2011

Для этого вы можете использовать Общее предпочтение. Вы получаете идентификатор выбранного значения из счетчика и сохраняете его в общем предпочтении.

Так что вы можете получить доступ к этому значению в любом месте внутри ваших приложений.

Если вы хотите отобразить выбранное значение счетчика из Say Activity1 в Activity2, получите значение из предпочтения Shared, теперь это будет Id, поэтому получите соответствующее Имя из Id в хэш-карте.

Для общих предпочтений взгляните на это ... и это ....

...