@Override public View getView(int position, View convertView, ViewGroup parent) { ContenedorVistas contenedor; // Si no se puede reciclar. if (convertView == null) { // Se infla el layout. convertView = LayoutInflater.from(contexto) .inflate(R.layout.fragment_imagenes_lista_item, parent, false); // Se obtienen las vistas de elemento. contenedor = new ContenedorVistas(); contenedor.imgFoto = (ImageView) convertView.findViewById(R.id.imgFoto); contenedor.lblUsuario = (TextView) convertView.findViewById(R.id.lblUsuario); // Se guarda el contenedor en la propiedad tag de la vista del // elemento. convertView.setTag(contenedor); } else { // Si se puede reciclar, obtengo el contenedor de la vista // reciclada del elemento. contenedor = (ContenedorVistas) convertView.getTag(); } // Se escriben los datos correspondientes en las vistas. Imagen imagen = datos.get(position); // contenedor.imgFoto.setImageUrl(imagen.getUrl(), cargadorImagenes); // Se muestra la imagen en el imageView con la librería Picasso, que // almacenará la imagen en caché de memoria y de disco con el tamaño // indicado. Picasso.with(contexto) .load(imagen.getUrl()) .resize(anchoFoto, altoFoto) .into(contenedor.imgFoto); contenedor.lblUsuario.setText(imagen.getUsername()); // Se retorna la vista del elemento para que se pinte. return convertView; }
private void parseRespuesta(JSONObject respuesta, ArrayList<Imagen> datosAdaptador) { try { // Se parsea la respuesta para obtener los datos deseados. // Se obtiene cual debe ser la próxima petición para paginación. JSONObject paginationKeyJSONObject = respuesta.getJSONObject(Instagram.PAGINACION_KEY); siguientePeticionURL = paginationKeyJSONObject.getString(Instagram.SIGUIENTE_PETICION_KEY); // Se obtiene el valor de la clave "data", que correponde al // array de datos. JSONArray dataKeyJSONArray = respuesta.getJSONArray(Instagram.ARRAY_DATOS_KEY); // Por cada uno de los elementos del array de datos. for (int i = 0; i < dataKeyJSONArray.length(); i++) { // Se obtiene el elemento, que es un JSONObject. JSONObject elemento = dataKeyJSONArray.getJSONObject(i); // Si el tipo de elemento indica que es una imagen. if (elemento .getString(Instagram.TIPO_ELEMENTO_KEY) .equals(Instagram.TIPO_ELEMENTO_IMAGEN)) { // Se crea un objeto modelo. Imagen imagenInstagram = new Imagen(); // Se obtiene el usuario. JSONObject usuario = elemento.getJSONObject(Instagram.USUARIO_KEY); // Se obtiene del usuario el nombre de usuario y se // guarda en el objeto modelo. imagenInstagram.setUsername(usuario.getString(Instagram.NOMBRE_USUARIO_KEY)); // Se obtiene la imagen. JSONObject imagen = elemento.getJSONObject(Instagram.IMAGEN_KEY); // Se obtiene la url de la imagen en resolución // estándar y se guarda en el objeto modelo. imagenInstagram.setUrl( imagen.getJSONObject(Instagram.RESOLUCION_ESTANDAR_KEY).getString(Instagram.URL_KEY)); // Se obtiene la url de la miniatura de la imagen y se // guarda en el objeto modelo. imagenInstagram.setThumbnail( imagen .getJSONObject(Instagram.RESOLUCION_MINIATURA_KEY) .getString(Instagram.URL_KEY)); // Se añade el objeto modelo a la lista de datos // para el adaptador. datosAdaptador.add(imagenInstagram); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } }