Android - 使用Spinner在Activities之间读取公共数据

时间:2011-03-18 12:18:31

标签: android android-layout hashmap spinner

我有一个Android应用程序,它从外部服务器检索一个名称和一个相应的ID(这可能是1个名称和ID组合或多个名称ID组合),这些都存储在HashMap<String, String>中 - ID为键,Name为值。

我想要实现的是一个动态Spinner,它使用此HashMap中的'Names'填充自己,当用户选择其中一个名称时,我将设置设置为ID号。然后,此ID号将用于以后的服务器请求中。

我的问题是从HashMap实现这个自定义Spinner的最佳方法是什么,这样当选择该选项时,ID号就会设置在某处。这个ID号必须可以从几个活动中访问 - 微调器存在于几个不同的活动中......但是在每个屏幕上应该具有相同的效果。

非常感谢设计模式和伪代码。目前Spinner在两个不同的屏幕上,位于ActionBar下方的顶部,但显然代码在两个XML布局文件中。

干杯。

修改

在HashMap中设置名称和ID的代码:

// 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 个答案:

答案 0 :(得分:1)

为此您可以使用共享首选项..您可以从微调器中获取所选值的ID并将其存储在共享首选项中。

这样您就可以在应用内的任何位置访问此值..

如果要在Activity2中的Say Activity1中显示所选的微调器值,请从共享首选项中获取值,现在它将为Id,因此从哈希映射中的Id中获取相应的名称。

对于共享偏好设置,请查看this ...和this ....