2017-07-27 2 views

Répondre

1

Le problème semble être ici:

public List<Photo> downloadGalleyItem(String url){ 
    photoList=new ArrayList<>(); 
    Photo photo=new Photo(); 
    String jsonString=getData(url); 
    try { 
     JSONObject jsonObject=new JSONObject(jsonString); 
     JSONArray jsonArray=jsonObject.getJSONArray("items"); 

     for(int i=0;i<jsonArray.length();i++){ 
      JSONObject jsonObject1=jsonArray.getJSONObject(i); 
      photo.setTitle(jsonObject1.getString("title")); 
      photo.setAuthor(jsonObject1.getString("author")); 
      photo.setAuthorId(jsonObject1.getString("author_id")); 
      photo.setTag(jsonObject1.getString("tags")); 

      JSONObject jsonMedia =jsonObject1.getJSONObject("media"); 
      String imageUrl=jsonMedia.getString("m"); 
      photo.setImage(jsonMedia.getString("m")); 

      //we are changing _m to _b so that when image is tapped we get biigger image 
      photo.setLink(imageUrl.replaceAll("_m.","_b.")); 
      photoList.add(photo); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return photoList; 
} 

Vous n'initialise pas une nouvelle photo dans chaque itération de la boucle jsonArray (c.-à-vous configurez simplement de nouvelles valeurs pour le même objet photo et en ajoutant une copie de cette photo à chaque fois)

vous devez modifier cette fonction pour ressembler à ceci:

public List<Photo> downloadGalleyItem(String url){ 
    photoList=new ArrayList<>(); 
    Photo photo=null; 
    String jsonString=getData(url); 
    try { 
     JSONObject jsonObject=new JSONObject(jsonString); 
     JSONArray jsonArray=jsonObject.getJSONArray("items"); 

     for(int i=0;i<jsonArray.length();i++){ 
      JSONObject jsonObject1=jsonArray.getJSONObject(i); 
      photo = new Photo(); 
      photo.setTitle(jsonObject1.getString("title")); 
      photo.setAuthor(jsonObject1.getString("author")); 
      photo.setAuthorId(jsonObject1.getString("author_id")); 
      photo.setTag(jsonObject1.getString("tags")); 

      JSONObject jsonMedia =jsonObject1.getJSONObject("media"); 
      String imageUrl=jsonMedia.getString("m"); 
      photo.setImage(jsonMedia.getString("m")); 

      //we are changing _m to _b so that when image is tapped we get biigger image 
      photo.setLink(imageUrl.replaceAll("_m.","_b.")); 
      photoList.add(photo); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return photoList; 
}