无法将ArrayList数据加载到android中的spinner

时间:2014-11-06 05:11:57

标签: java android json arraylist

我使用json从服务器解析数据。然后将它们存储在Arraylist中并将它们加载到android中的微调器中。但我得到所有微调器数据的相同值。例如,我将json数据设置如下:

[{"pricing":"500,600,700,800,900,1000"}]

现在我用逗号分隔它们并将它们添加到arraylist中,如下所示:

List<String> items = Arrays.asList(Pricing.split(","));
for(int j=0;j<items.size();j++)
{
    r.add(items.get(i));
}

然后在旋转器中加载这个arraylist。 这是我的完整代码:

    try 
                {
                    json = new JSONArray(data);
                    for (int i = 0; i < json.length(); i++) 
                    {
                        JSONObject obj = json.getJSONObject(i);
                        String Pricing = obj.getString("pricing");

                        List<String> items = Arrays.asList(Pricing.split(","));
                        List<String> r = new ArrayList<String>();
                        for(int j=0;j<items.size();j++)
                        {
                            r.add(items.get(i));
                        }
                    }

                    @SuppressWarnings({ "rawtypes", "unchecked" })
                    ArrayAdapter cd = new ArrayAdapter(this,android.R.layout.simple_spinner_item,r);  
                    cd.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
                    spin2.setAdapter(cd); 
}

但是微调器有500 500 500 500 500 500而不是500 600 700 800 900 1000。 我在这段代码中做错了什么.. ??我是android的新手。请建议我解决。

3 个答案:

答案 0 :(得分:2)

您似乎试图在列表中添加相同的值,即。在整个列表中添加 0th 值,因为索引i用于json数组,右侧索引将为j

所以改变

 r.add(items.get(i));

 r.add(items.get(j));

答案 1 :(得分:2)

请尝试这种方式,希望这有助于您解决问题。

您正在使用错误的索引变量(i),它用于外部循环,但您的数据使用内部循环访问,因此只需将(i)索引变量替换为(j)索引变量。

r.add(items.get(i));

<强>替换

r.add(items.get(j));

答案 2 :(得分:1)

尝试更改以下代码:

List<String> items = Arrays.asList(Pricing.split(","));
                        List<String> r = new ArrayList<String>();
                        for(int j=0;j<items.size();j++)
                        {
                            r.add(items.get(i));
                        }

经由

 List<String> items = Arrays.asList(Pricing.split(","));
                        List<String> r = new ArrayList<String>();
                        for(int j=0;j<items.size();j++)
                        {
                            r.add(items.get(j));
                        }

因为你用i而不是j。