简体   繁体   English

如何从Rest API将图像资源设置为Android ImageView

[英]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. 这是我的活动,这里我从Rest Service获取图像并将其添加到列表中。
  2. I have a GridView With CustomAdapter ImageView And TextView I want to set the Image Resource To Image View. 我有一个带有CustomAdapter ImageView和TextView的GridView,我想将图像资源设置为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. 这是我的ImageView和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. 我现在在列表中有图像网址,我想将这些网址设置为ImageView。
  3. I'm new To Android Can Any One Help Me How To Solve This Problem. 我是Android新手,有人可以帮助我如何解决此问题。
  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); 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 有关更多信息,请访问: https : //github.com/bumptech/glide

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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