Android 如何从api中的参数获取图像URL并将其显示到Imageview中

Android 如何从api中的参数获取图像URL并将其显示到Imageview中,android,web-services,api,image-loading,Android,Web Services,Api,Image Loading,我正在开发一个社交网络应用程序,在这个应用程序中,我必须从服务器获取用户的详细信息。我在参数中获取用户的配置文件图像url,但在获取图像和显示它时遇到问题,因为每次它在Imageview中只显示图像url 这是我的api提要:- {"post_id":"559", "userid":"11", "content":"\u0908\u092e\u093e\u0928\u0926\u093e\u0930\u0940 \u090f\u0915 \u092c\u094b\u0939\u0

我正在开发一个社交网络应用程序,在这个应用程序中,我必须从服务器获取用户的详细信息。我在参数中获取用户的配置文件图像url,但在获取图像和显示它时遇到问题,因为每次它在Imageview中只显示图像url

这是我的api提要:-

{"post_id":"559",
    "userid":"11",
    "content":"\u0908\u092e\u093e\u0928\u0926\u093e\u0930\u0940 \u090f\u0915 \u092c\u094b\u0939\u094b\u0924 \u092e\u0939\u0902\u0917\u0940 \u091a\u0940\u095b \u0939\u0948.... \u0917\u093f\u0930\u0947 \u0939\u0941\u090f \u0932\u094b\u0917\u094b \u0938\u0947 \u0909\u0938\u0915\u0940 \u0909\u092e\u094d\u092e\u0940\u0926 \u0928\u0939\u0940\u0902 \u0915\u0930\u0928\u0940 \u091a\u093e\u0939\u093f\u090f..",
    "favorite_count":"1",
    "reply_count":"2",
    "repost_count":"0",
    "post_location":"",
    "created_date":"2015-05-29 12:04:28",
    "name":"devraj singh","user_image":"http:\/\/sabakuch.com\/public\/images_upload\/avatars\/ozone\/11_30_11149322_10205781000956557_74437511307260696_n.jpg",
    "post_images":null,
    "gender":"1"}
这是我的适配器类,我将从中获得详细信息

    public class OzoneAdapter extends BaseAdapter{

    ArrayList<Ozone_Beans> feedList;
    LayoutInflater inflater;
    Activity activity;

    Context context;
    ImageLoader imageloader;



    public OzoneAdapter(ArrayList<Ozone_Beans> feedList, Activity activity) {
        // TODO Auto-generated constructor stub
        super();
        this.feedList = feedList;
        this.activity = activity;
        inflater = (LayoutInflater )activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageloader = ImageLoader.getInstance();
        imageloader.init(ImageLoaderConfiguration.createDefault(activity));
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub  
        return feedList.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return feedList.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View vi = convertView;
        ViewHolder holder;

        if(convertView==null)
            //convertView = inflater.inflate(R.layout.ozone_item, null);

            convertView = inflater.inflate(R.layout.ozone_item, null);
        holder = new ViewHolder();

        holder.tvDate = (TextView)convertView.findViewById(R.id.ozone_name);
        holder.tvContent = (TextView)convertView.findViewById(R.id.ozone_content);
        holder.tvUser = (TextView)convertView.findViewById(R.id.ozone_date);
        holder.image_user_image = (ImageView)convertView.findViewById(R.id.ozone_user_image);
        holder.postImage = (ImageView)convertView.findViewById(R.id.ozone_post_image);



        holder.tvUser.setText(feedList.get(position).getName());
        holder.tvDate.setText(feedList.get(position).getCreated_date());
        holder.tvContent.setText(feedList.get(position).getContent());


        //imageloader.displayImage(feedList.get(position).getUser_image(), holder.image_user_image);
        //imageloader.displayImage(feedList.get(position).getUser_image(), holder.image_user_image);
        //holder.image_user_image.setImageURI(feedList.get(position).getUser_image());
    //  imageloader.displayImage(feedList.get(position).getTweet_images(), holder.postImage);

        return convertView;
    }

    public class ViewHolder {
        public ImageView image_user_image;
        public ImageView postImage;
        TextView tvContent , tvUser, tvDate;
    }

}
公共类OzoneAdapter扩展了BaseAdapter{
ArrayList提要列表;
充气机;
活动;
语境;
图像加载器;
公用OzoneAdapter(ArrayList提要列表,活动){
//TODO自动生成的构造函数存根
超级();
this.feedList=feedList;
这个。活动=活动;
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
imageloader=imageloader.getInstance();
init(ImageLoaderConfiguration.createDefault(活动));
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回feedList.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回feedList.get(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图vi=转换视图;
视窗座;
if(convertView==null)
//convertView=充气机。充气(R.layout.ozone_项,空);
convertView=充气机。充气(R.layout.ozone_项,空);
holder=新的ViewHolder();
holder.tvDate=(TextView)convertView.findViewById(R.id.u名称);
holder.tvContent=(TextView)convertView.findViewById(R.id.u内容);
holder.tvUser=(TextView)convertView.findViewById(R.id.U日期);
holder.image\u user\u image=(ImageView)convertView.findViewById(R.id.ozone\u user\u image);
holder.postImage=(ImageView)convertView.findViewById(R.id.ozone\u post\u image);
holder.tvUser.setText(feedList.get(position.getName());
holder.tvDate.setText(feedList.get(position.getCreated_date());
holder.tvContent.setText(feedList.get(position.getContent());
//imageloader.displayImage(feedList.get(position).getUser\u image(),holder.image\u user\u image);
//imageloader.displayImage(feedList.get(position).getUser\u image(),holder.image\u user\u image);
//holder.image\u user\u image.setImageURI(feedList.get(position.getUser\u image());
//imageloader.displayImage(feedList.get(position.getTweet_images(),holder.postImage);
返回视图;
}
公共类视图持有者{
公共图像查看图像用户图像;
公共图像查看后期图像;
text查看电视内容、电视用户、电视日期;
}
}

看看这一点,尝试在您的代码中实现

 class Holder {
    TextView tv1, tv2, tv3;
    ImageView iv1, iv2;

    public Holder(View v) {
        tv1 = (TextView) v.findViewById(R.id.textView);
        tv2 = (TextView) v.findViewById(R.id.textView2);
        tv3 = (TextView)v.findViewById(R.id.tvCouponDeal);
        iv1 = (ImageView)v.findViewById(R.id.imageView3);
        iv2 = (ImageView)v.findViewById(R.id.imageView4);
    }
}

class MyAdapter extends ArrayAdapter<String> {
    Context context;
    private ImageLoadingListener animateFirstListener;

    public MyAdapter(Context context, int resource) {
        super(context, resource);
        this.context = context;
    }

    @Override
    public int getCount() {
        return categoryList.size();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View dataRow = convertView;
        Holder holder = null;
        if (dataRow == null) {
            LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            dataRow = inflater.inflate(R.layout.category_items_cell, parent, false);
            holder = new Holder(dataRow);
            dataRow.setTag(holder);
        } else {
            holder = (Holder) dataRow.getTag();
        }
        holder.tv1.setText(categoryList.get(position).getMerchantName());
        holder.tv2.setText(categoryList.get(position).getVoucherOfferlogo());
        holder.tv3.setText(categoryList.get(position).getOffertype());
        if(categoryList.get(position).getIsexclusive().equals("1"))
            holder.iv2.setImageResource(R.drawable.fav_selected);
        ImageLoader.getInstance().displayImage(categoryList.get(position).getMerchantStanderedimage(), holder.iv1, options, animateFirstListener);
        return dataRow;
    }
}
private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {

    static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());

    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        if (loadedImage != null) {
            ImageView imageView = (ImageView) view;
            boolean firstDisplay = !displayedImages.contains(imageUri);
            if (firstDisplay) {
displayedImages.add(imageUri);
            }
        }
    }
}
类持有者{
文本视图tv1、tv2、tv3;
图像视图iv1、iv2;
公众持有人(视图五){
tv1=(TextView)v.findViewById(R.id.TextView);
tv2=(TextView)v.findViewById(R.id.textView2);
tv3=(TextView)v.findViewById(R.id.tvCouponDeal);
iv1=(ImageView)v.findViewById(R.id.imageView3);
iv2=(ImageView)v.findViewById(R.id.imageView4);
}
}
类MyAdapter扩展了ArrayAdapter{
语境;
私有ImageLoadingListener animateFirstListener;
公共MyAdapter(上下文,int资源){
超级(上下文、资源);
this.context=上下文;
}
@凌驾
public int getCount(){
返回categoryList.size();
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
查看数据行=转换视图;
Holder=null;
if(dataRow==null){
LayoutFlater充气器=(LayoutFlater)getActivity().getSystemService(Context.LAYOUT\u充气器\u服务);
dataRow=充气机。充气(R.layout.category\u items\u单元格,父项,false);
持有人=新持有人(数据行);
dataRow.setTag(持有者);
}否则{
holder=(holder)dataRow.getTag();
}
holder.tv1.setText(categoryList.get(position.getMerchantName());
holder.tv2.setText(categoryList.get(position.getVoucherOfferlogo());
holder.tv3.setText(categoryList.get(position.getOffertype());
if(categoryList.get(position.getIsexclusive().equals(“1”))
holder.iv2.setImageResource(R.drawable.fav_选择);
ImageLoader.getInstance().displayImage(categoryList.get(position).getMerchantStanderedimage(),holder.iv1,options,animateFirstListener);
返回数据行;
}
}
私有静态类AnimateFirstDisplayListener扩展了SimpleMapgeLoadingListener{
静态最终列表displayedImage=Collections.synchronizedList(新LinkedList());
@凌驾
public void onLoadingComplete(字符串imageUri、视图视图、位图加载图像){
如果(LoadeImage!=null){
ImageView ImageView=(ImageView)视图;
布尔值firstDisplay=!displayedImages.contains(imageUri);
如果(第一次显示){
displayedImages.add(imageUri);
}
}
}
}

看看这一点,尝试在您的代码中实现

 class Holder {
    TextView tv1, tv2, tv3;
    ImageView iv1, iv2;

    public Holder(View v) {
        tv1 = (TextView) v.findViewById(R.id.textView);
        tv2 = (TextView) v.findViewById(R.id.textView2);
        tv3 = (TextView)v.findViewById(R.id.tvCouponDeal);
        iv1 = (ImageView)v.findViewById(R.id.imageView3);
        iv2 = (ImageView)v.findViewById(R.id.imageView4);
    }
}

class MyAdapter extends ArrayAdapter<String> {
    Context context;
    private ImageLoadingListener animateFirstListener;

    public MyAdapter(Context context, int resource) {
        super(context, resource);
        this.context = context;
    }

    @Override
    public int getCount() {
        return categoryList.size();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View dataRow = convertView;
        Holder holder = null;
        if (dataRow == null) {
            LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            dataRow = inflater.inflate(R.layout.category_items_cell, parent, false);
            holder = new Holder(dataRow);
            dataRow.setTag(holder);
        } else {
            holder = (Holder) dataRow.getTag();
        }
        holder.tv1.setText(categoryList.get(position).getMerchantName());
        holder.tv2.setText(categoryList.get(position).getVoucherOfferlogo());
        holder.tv3.setText(categoryList.get(position).getOffertype());
        if(categoryList.get(position).getIsexclusive().equals("1"))
            holder.iv2.setImageResource(R.drawable.fav_selected);
        ImageLoader.getInstance().displayImage(categoryList.get(position).getMerchantStanderedimage(), holder.iv1, options, animateFirstListener);
        return dataRow;
    }
}
private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {

    static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());

    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        if (loadedImage != null) {
            ImageView imageView = (ImageView) view;
            boolean firstDisplay = !displayedImages.contains(imageUri);
            if (firstDisplay) {
displayedImages.add(imageUri);
            }
        }
    }
}
类持有者{
文本视图tv1、tv2、tv3;
图像视图iv1、iv2;
公众持有人(视图五){
tv1=(TextView)v.findViewById(R.id.TextView);
tv2=(TextView)v.findViewById(R.id.textView2);
tv3=(TextView)v.findViewById(R.id.tvCouponDeal);
iv1=(ImageView)v.findViewById(R.id.imageView3);
iv2=(ImageView)v.findViewById(R.id.imageView4);
}
}
类MyAdapter扩展了ArrayAdapter{
语境;
私有图像加载