簡體   English   中英

Android從URL設置ListView圖像

[英]Android Set ListView Image From URL

我有一個包含圖片的Newsfeed(ListView)。 我想從網絡上加載圖像並用於我的活動中。 所以我在MainActivity的OnCreate()中有這個:

    String url = "http://m.c.lnkd.licdn.com/mpr/pub/image-Zo8GfnPFe2SPJa2kv-bwRRP7GivkI_DrZ_bw2xHFJLOvI4T0No8wCrLzo95B7jMdzre/suneet-choudhary.jpg";
    Drawable x = LoadImageFromWebOperations(url);
        FeedUser FeedUser_data[] = new FeedUser[]
        {
            new FeedUser(x, "Usename1", "What the hell man."),
            new FeedUser(x, "Username2", "Why not sunny leone."),
        };

        FeedUserAdapter adapter = new FeedUserAdapter(this, 
                R.layout.listview_item_row, FeedUser_data);

        lv = (ListView)findViewById(R.id.list);
        lv.setAdapter(adapter);

    public static Drawable LoadImageFromWebOperations(String url) {
        try {
            InputStream is = (InputStream) new URL(url).getContent();
            Drawable d = Drawable.createFromStream(is, "src name");
            return d;
        } catch (Exception e) {
            return null;
        }
    }

這是我的FeedUser.java

public class FeedUser {
    public Drawable icon;
    public String title;
    public String review;
    public FeedUser(){
        super();
    }

    public FeedUser(Drawable x, String title, String review) {
        super();
        this.icon = x;
        this.title = title;
        this.review = review;
    }
}

下面是FeedUser適配器:

public class FeedUserAdapter extends ArrayAdapter<FeedUser>{

    Context context; 
    int layoutResourceId;    
    FeedUser data[] = null;

    public FeedUserAdapter(Context context, int layoutResourceId, FeedUser[] data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        FeedUserHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new FeedUserHolder();
            holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
            holder.txtTitle = (TextView)row.findViewById(R.id.UserName);
            holder.txtReview = (TextView)row.findViewById(R.id.ReviewText);

            row.setTag(holder);
        }
        else
        {
            holder = (FeedUserHolder)row.getTag();
        }

        FeedUser FeedUser = data[position];
        holder.txtTitle.setText(FeedUser.title);
        holder.imgIcon.setImageDrawable(FeedUser.icon);
        holder.txtReview.setText(FeedUser.review);

        return row;
    }

    static class FeedUserHolder
    {
        ImageView imgIcon;
        TextView txtTitle;
        TextView txtReview;
    }
}

現在它沒有顯示任何錯誤,但是圖像也不會加載。 我是一個初學者,所以不確定可能出什么問題了:/

您可以嘗試使用以下易於使用且仍通過新功能和錯誤解決方案維護的庫:

https://github.com/nostra13/Android-Universal-Image-Loader

如果您下載http://github.com/square/picasso並使用此代碼,它將為您工作,並且所有圖像下載工作均由畢加索完成

String url = "http://m.c.lnkd.licdn.com/mpr/pub/image-Zo8GfnPFe2SPJa2kv-bwRRP7GivkI_DrZ_bw2xHFJLOvI4T0No8wCrLzo95B7jMdzre/suneet-choudhary.jpg";
    FeedUser FeedUser_data[] = new FeedUser[] {
        new FeedUser(url, "Usename1", "What the hell man."),
        new FeedUser(url, "Username2", "Why not sunny leone."),
    };

    FeedUserAdapter adapter = new FeedUserAdapter(this, 
            R.layout.listview_item_row, FeedUser_data);

    lv = (ListView)findViewById(R.id.list);
    lv.setAdapter(adapter);

}

public class FeedUser {
     public String iconUrl;
     public String title;
     public String review;
} 

public FeedUser(String url, String title, String review) {
    this.iconUrl = url;
    this.title = title;
    this.review = review;
}

}

公共類FeedUserAdapter擴展了ArrayAdapter {

Context context; 
int layoutResourceId;    
FeedUser data[] = null;

public FeedUserAdapter(Context context, int layoutResourceId, FeedUser[] data) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    FeedUserHolder holder = null;

    if(row == null) {
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new FeedUserHolder();
        holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
        holder.txtTitle = (TextView)row.findViewById(R.id.UserName);
        holder.txtReview = (TextView)row.findViewById(R.id.ReviewText);

        row.setTag(holder);
    }
    else {
        holder = (FeedUserHolder)row.getTag();
    }

    FeedUser FeedUser = data[position];
    holder.txtTitle.setText(FeedUser.title);

    Picasso.with(context).load(FeedUser.iconUrl).fit().noFade().into(holder.imgIcon);
    holder.txtReview.setText(FeedUser.review);

    return row;
}

static class FeedUserHolder {
    ImageView imgIcon;
    TextView txtTitle;
    TextView txtReview;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM