我使用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的新手。请建议我解决。
答案 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。