简体   繁体   中英

How To Set Image Resource To Android ImageView from Rest API

import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.*******.******.app.R;
import com.*******.******.app.adapter.CustomAdapter;
import com.*******.******.app.adapter.CustomPromoAdapter;
import com.*******.******.app.pojo.Campaigns;
import com.*******.******.app.pojo.ConsumerProfile;

import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;

public class Promo extends AppCompatActivity {
    private ArrayList<String> imageurls = new ArrayList<>();
    private ArrayList<String> imgnames = new ArrayList<>();
    GridView gridview;
    Context context;
    ArrayList programName;
    String campid,campImage,campName;
    TextView name;
    ImageView images;
  //  public static String[] programNameList = {"AppleMacBook", "HP_note_Book", "LG_NEXUS", "NokiaLumia", "SamsungRT", "SONY_BRAVIA", "Sansui"};
  //  public static int[] programImages = {R.drawable.apple, R.drawable.hp, R.drawable.nexus, R.drawable.lumia, R.drawable.fridge, R.drawable.tv, R.drawable.tv1};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_promo);
        new HttpRequesrPromo().execute();
        new HttpLocationPromo().execute();
        gridview = (GridView) findViewById(R.id.gridView1);
        //gv.setAdapter(new CustomPromoAdapter(this,programNameList,programImages));
        CustomPromoAdapter adapter = new CustomPromoAdapter(this,imageurls,imgnames);
        gridview.setAdapter(adapter);
        name = (TextView) findViewById(R.id.textView1);
        images = (ImageView) findViewById(R.id.imageView1);

    }

    private class HttpRequesrPromo extends AsyncTask<Void, Void, Campaigns> {

        @Override
        protected Campaigns doInBackground(Void... params) {

            try {

                final String url = "http://myurl";


                RestTemplate restTemplate = new RestTemplate();
                Campaigns campa = restTemplate.getForObject(url, Campaigns.class);
                return campa;

            } catch (Exception e) {
                Log.e("MainActivity", e.getMessage(), e);

            }
            return null;
        }

        @Override
        protected void onPostExecute(Campaigns campa) {
            super.onPostExecute(campa);
            campid = campa.getId();
            Log.d("Campaign Idddddd~~~~~~~~", "onPostExecute: " + campid);

        }
    }

    private class HttpLocationPromo extends AsyncTask<Void, Void, Campaigns> {

        @Override
        protected Campaigns doInBackground(Void... params) {
            try {

                final String url = "http://myurl";


                RestTemplate restTemplate = new RestTemplate();
                Campaigns locationcampa = restTemplate.getForObject(url, Campaigns.class);
                return locationcampa;

            } catch (Exception e) {
                Log.e("MainActivity", e.getMessage(), e);

            }
            return null;
        }

        @Override
        protected void onPostExecute(Campaigns locationcampa) {
            super.onPostExecute(locationcampa);
            campImage=locationcampa.getImage();
            campName=locationcampa.getName();
            imgnames.add(campName);
            name.setText(campName);

            Log.d("ImageUUURRRLLL", "onPostExecute: " + campImage);
            Log.d("CampNNNAAMMEEE", "onPostExecute: " +campName);
            imageurls.add(campImage);



        }
    }
}
  1. This is my Activity Here I'm Getting Images From Rest Service and adding them in a list.
  2. I have a GridView With CustomAdapter ImageView And TextView I want to set the Image Resource To Image View.
  3. Below is My Adapter.......

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.app.R;
import com.app.activity.MainActivity;
import com.app.activity.Promo;

import java.util.ArrayList;

/**
 * Created by ns2 on 2/4/16.
 */
public class CustomPromoAdapter extends BaseAdapter{
    ImageView imageView;
    TextView textView;
    String [] result;
    Context context;
    int [] imageId;
    private static LayoutInflater inflater=null;
    public CustomPromoAdapter(Promo promo, ArrayList<String> imageurls, ArrayList<String> imgnames) {
        // TODO Auto-generated constructor stub
        //result=programNameList;
      //  context=promo;
      //  imageId=programImages;
        inflater = ( LayoutInflater )context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

    @Override
    public int getCount() {
        return result.length;
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View view;
        view=inflater.inflate(R.layout.promo_gridlist,null);
       /* textView=(TextView)view.findViewById(R.id.textView1);
        imageView=(ImageView)view.findViewById(R.id.imageView1);
        imageView.setImageResource(imageId[position]);
        textView.setText(imageId[position]);*/
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "You Clicked " + result[position], Toast.LENGTH_LONG).show();
            }
        });
        return view;
    }
}
  1. This is my Adapter.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_gravity="center" android:layout_width="88dp" android:layout_height="88dp" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" /> <TextView android:id="@+id/textView1" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15dp" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:text="TextView" /> </LinearLayout> 

  1. This is my Layout with ImageView And TextView.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".activity.Promo" > <GridView android:id="@+id/gridView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView1" android:numColumns="2" > </GridView> </RelativeLayout> 

  1. This is my Main layout.
  2. I Have The Image Url's In a List now I want to Set those Url's to ImageView.
  3. I'm new To Android Can Any One Help Me How To Solve This Problem.
  4. Thankful To Them........

Best way to achieve this is use picasso library.

Picasso.with(context) .load(url) .placeholder(R.drawable.user_placeholder) .error(R.drawable.user_placeholder_error) .into(imageView);

for more details

Try this,

URL photoUrl = new URL(imageUrl);
mIcon = BitmapFactory.decodeStream(photoUrl.openConnection() .getInputStream());

imageView.setImageBitmap(mIcon);

Best way to load images from server is

Glide.with(mContext)
        .load(imageUrl)
        .diskCacheStrategy(DiskCacheStrategy.ALL)
        .placeholder(R.drawable.default)
        .error(R.drawable.default)
        .override(400, 400)
        .centerCrop()
        .into(imageView);

For more follow this : https://github.com/bumptech/glide

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM