我正在尝试使用每个JSON元素的第二个值,并在一个网址网址中使用它。我想要结束的是一系列网址,其中包含我的json数据中的图像名称。
JSON数据:
[["1","Dragon Neck Tattoo","thm_polaroid.jpg","polaroid.jpg"],["2","Neck Tattoo","thm_default.jpg","default.jpg"],["3","Sweet Tattoo","thm_enhanced-buzz-9667-1270841394-4.jpg","enhanced-buzz-9667-1270841394-4.jpg"]]
MainActivity:
Bundle bundle = getIntent().getExtras();
String jsonData = bundle.getString("jsonData");
try {
//THIS IS WHERE THE VALUES WILL GET ASSIGNED
JSONArray jsonArray = new JSONArray(jsonData);
private String[] mStrings=
{
for(int i=0;i<jsonArray.length();i++)
{
"http://www.mywebsite.com/images/" + jsonArray(i)(2),
}
}
list=(ListView)findViewById(R.id.list);
adapter=new LazyAdapter(this, mStrings);
list.setAdapter(adapter);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:1)
正如我在a previous answer中提到的,JSONArray
只是object,而不是numerically-indexable array。看起来你也遇到了基本的Java语法问题。
如果实际想要使用String[]
,而不是List<String>
:
private String[] mStrings = new String[jsonArray.length()];
for (int i=0; i<jsonArray.length(); i++)
{
String url = jsonArray.getJSONArray(i).getString(2);
mStrings[i] = "http://www.mywebsite.com/images/" + url;
}
如果您使用的LazyAdapter
可以使用List
,则可以更轻松地使用:
private List<String> mStrings = new ArrayList<String>();
for (int i=0; i<jsonArray.length(); i++)
{
String url = jsonArray.getJSONArray(i).getString(2);
mStrings.add("http://www.mywebsite.com/images/" + url);
}