2014-08-27 48 views
0

只得到了最后一个对象的名字,我parsing这个JSON在ListView

{ 
"technology" : [ 

{ 
"title" : "Android", 
"images" : [ 
{ 
"name" : "Android - I" 
}, 
{ 
"name" : "Android - II" 
}, 
{ 
"name" : "Android - III" 
} 
] 
} 

] 
} 

我解析technologyimages 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); 

    } 
} 
+0

发表'technologyactivity.java',你为什么需要通过arraylist当你通过所需的物品本身 – Raghunandan 2014-08-27 10:24:23

+0

'技术'类是否实现了parcelable? – Raghunandan 2014-08-27 10:28:18

+0

我发布了我的整个TechnologyActivity.java的代码,但由于一些原因,我必须通过整个arraylist – Mysterious 2014-08-27 10:29:02

回答

1

发生这种情况,因为你每次创建内部的arrayListImages = new ArrayList<SubTech>();一个新实例循环,它应该只创建一次,并且也在循环之外

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); 
     } 
+0

是的,你是对的,我刚刚移动arrayListImages = new ArrayList ();前循环和完成! – Mysterious 2014-08-27 10:42:42