Android receipt of Api pictures (Json)



  • Hi, I've got the challenge of getting the data from the api, putting it on the list, I made the list, but I don't know how to download the photos of these workshops, I know what it's done with picasso, but I didn't work with him, and I'm trying to figure out how to do it, I'm very grateful for your help. Api: http://gdetut.com/api/firms?salt=63926e380bdc96ef990d57898daeb71c&category_id=1 Viewer: http://jsonviewer.stack.hu/

    p.s. What int image you have to do is String csv_image, I know you didn't have time to change.

    Retrofit class:

    public class Retrofit {
    

    private static final String ENDPOINT = "http://gdetut.com/api";
    private static ApiInterface apiInterface;

    interface ApiInterface {
    @GET("/firms?salt=63926e380bdc96ef990d57898daeb71c&category_id=1")
    void getPlaces(Callback<List<Places>> callback);

    }

    static {
    init();
    }

    private static void init() {
    RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint(ENDPOINT)
    .setLogLevel(RestAdapter.LogLevel.FULL)
    .build();
    apiInterface = restAdapter.create(ApiInterface.class);
    }

    public static void getPlaces (Callback<List<Places>> callback) {
    apiInterface.getPlaces(callback);
    }

    }

    Retrofit success in Activity:

    Retrofit.getPlaces(new Callback<List<Places>>() {
    @Override
    public void success(List<Places> places, Response response) {

        listView.setAdapter(new MyAdapter(MainActivity.this, places));
    

    Adapter:

      class MyAdapter extends ArrayAdapter<Places> {

    public MyAdapter(Context context, List<Places> objects) {
    super(context, R.layout.list_item, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    View rowView = convertView;
    if (rowView == null) {
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    rowView = inflater.inflate(R.layout.list_item, parent, false);
    holder = new ViewHolder();
    holder.nameOfPlace = (TextView) rowView.findViewById(R.id.name_id);
    holder.subcategory_name = (TextView) rowView.findViewById(R.id.subcategory_name_id);
    holder.geometryName = (TextView) rowView.findViewById(R.id.geometry_name_id);
    holder.imageView = (ImageView) rowView.findViewById(R.id.image_id);
    holder.rating = (TextView) rowView.findViewById(R.id.rating_id);
    rowView.setTag(holder);
    } else {
    holder = (ViewHolder) rowView.getTag();
    }

    Places places = getItem(position);
    holder.nameOfPlace.setText(places.getName());
    holder.subcategory_name.setText(places.getSubcategory_name());
    holder.geometryName.setText(places.getGeometry_name());
    holder.imageView.setImageResource(places.getImage());
    holder.imageView.setImageResource(R.drawable.restaurant48);
    holder.rating.setText(places.getRating());
    
    
    return rowView;
    

    }

    class ViewHolder {

    public TextView nameOfPlace;
    public TextView subcategory_name;
    public TextView geometryName;
    public TextView rating;
    public ImageView imageView;
    

    }
    }

    Places class:

        public class Places implements Serializable {

    String name;
    String geometry_name;
    String rating;
    String subcategory_name;
    int image;

    public Places(String name, String geometry_name, String rating,String, subcategory_name, int image) {
    this.name = name;
    this.geometry_name = geometry_name;
    this.rating = rating;
    this.subcategory_name = subcategory_name;
    this.image = image;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getGeometry_name() {
    return geometry_name;
    }

    public void setGeometry_name(String geometry_name) {
    this.geometry_name = geometry_name;
    }

    public String getRating() {
    return rating;
    }

    public void setRating(String rating) {
    this.rating = rating;
    }

    public String getSubcategory_name() {
    return subcategory_name;
    }

    public void setSubcategory_name(String subcategory_name) {
    this.subcategory_name = subcategory_name;
    }

    public int getImage() {
    return image;
    }

    public void setImage(int image) {
    this.image = image;
    }



  • Starting with Picasso in gradle:

    compile 'com.squareup.picasso:picasso:2.5.2'
    

    In response to the request, there's a direct reference to the image, so it's simple:

    Picasso.with(convertView.getContext()).load(places.getImage()).into(holder.imageView);
    

    If you wish, you can set a placeholder at the time of downloading pictures and error of error:

    .placeholder(R.drawable.placeholder)
        .error(R.drawable.error) 
    



Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2