我是parsing
这个JSON:
{
"technology" : [
{
"title" : "Android",
"images" : [
{
"name" : "Android - I"
},
{
"name" : "Android - II"
},
{
"name" : "Android - III"
}
]
}
]
}
我分析technology
和images
JSON数组,但每当我在Android上做水龙头就在列表视图中获得最后一个对象名称,在这种情况下,“Android的- III”?
所以我可以知道是什么原因...吗?
TechnologyActivity.java:-
JSONObject jsonObject = new JSONObject(data);
JSONArray techArray = jsonObject.getJSONArray("technology");
for(int i=0; i<techArray.length(); i++)
{
JSONObject jObject = techArray.getJSONObject(i);
Technology tech = new Technology();
tech.setTitle(jObject.getString("title"));
Log.d("technology-title:", jObject.getString("title"));
JSONArray imagesArray = jObject.getJSONArray("images");
for(int j=0; j<imagesArray.length(); j++)
{
JSONObject imagesObject = imagesArray.getJSONObject(j);
SubTech images = new SubTech();
images.setName(imagesObject.getString("name"));
Log.d("technology-name", imagesObject.getString("name"));
arrayListImages = new ArrayList<SubTech>();
arrayListImages.add(images);
}
tech.setImages(arrayListImages);
arrayList.add(tech);
}
SubTechActivity.java:-
public class SubTechActivity extends Activity {
ArrayList<Technology> arrayList;
Technology tech;
SubTechAdapter adapter;
ArrayList<SubTech> arrayListSubTech;
int currentPosition ;
@SuppressWarnings("unchecked")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_technology);
Bundle bundle = getIntent().getExtras();
arrayList = (ArrayList<Technology>) bundle.getSerializable("data");
currentPosition = bundle.getInt("current");
tech = arrayList.get(currentPosition);
arrayListSubTech = tech.getImages();
ListView listview = (ListView)findViewById(R.id.list);
adapter = new SubTechAdapter(SubTechActivity.this, R.layout.adapter_technology, arrayListSubTech);
listview.setAdapter(adapter);
}
}
之所以发生这种情况,是因为您每次都arrayListImages = new ArrayList<SubTech>();
在for循环内创建一个新的实例时,应该只创建一次,而在循环外也要创建一次。
arrayListImages = new ArrayList<SubTech>();
for(int j=0; j<imagesArray.length(); j++)
{
JSONObject imagesObject = imagesArray.getJSONObject(j);
SubTech images = new SubTech();
images.setName(imagesObject.getString("name"));
Log.d("technology-name", imagesObject.getString("name"));
arrayListImages.add(images);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句