• Android Picasso 获取远程图片并显示


     Picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能。

    它的使用及其的简单,仅仅只需要一行代码就能完全实现图片的异步加载:

            Picasso.with(view.getContext()).load(newsItems.get(position).getThumb()).into(holder.ivHeader);//Picasso异步加载预览图

    完全不需要任何其他操作便可以加载图片,而且自带缓存功能,还优化了在RecyclerView中的图片重复利用等问题,而且使用了复杂的图片压缩算法来减少内存消耗以及自带二级缓存

    下面是博主在Adapter中写的范例:

     1 package socialnews.linccy.com.socialnews.adapter;
     2 
     3 import android.support.v7.widget.RecyclerView;
     4 import android.view.LayoutInflater;
     5 import android.view.View;
     6 import android.view.ViewGroup;
     7 import android.widget.ImageView;
     8 import android.widget.TextView;
     9 
    10 import com.squareup.picasso.Picasso;
    11 
    12 import java.util.List;
    13 
    14 import butterknife.BindView;
    15 import butterknife.ButterKnife;
    16 import socialnews.linccy.com.socialnews.utils.NewsItem;
    17 import socialnews.linccy.com.socialnews.R;
    18 
    19 /**
    20  * Created by Lcc on 2016/7/9.
    21  */
    22 
    23 public class NewsItemAdapter extends RecyclerView.Adapter<NewsItemAdapter.ViewHolder> {
    24 
    25     private static List<NewsItem> newsItems;
    26     private View view;
    27 
    28     public NewsItemAdapter(List<NewsItem> newsItems) {
    29         this.newsItems = newsItems;
    30     }
    31 
    32     @Override
    33     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    34         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_cardview_item, parent, false);
    35         ViewHolder holder = new ViewHolder(view);
    36         return holder;
    37     }
    38 
    39     @Override
    40     public void onBindViewHolder(ViewHolder holder, int position) {
    41         holder.tvTitle.setText(newsItems.get(position).getTitle());
    42         holder.tvDetail.setText(newsItems.get(position).getDescr());
    43         holder.tvTime.setText(newsItems.get(position).getTime());
    44         Picasso.with(view.getContext()).load(newsItems.get(position).getThumb()).into(holder.ivHeader);//Picasso异步加载预览图
    45     }
    46 
    47     @Override
    48     public int getItemCount() {
    49         return newsItems.size();
    50     }
    51 
    52 
    53     public class ViewHolder extends RecyclerView.ViewHolder {
    54         @BindView(R.id.iv_header)
    55         ImageView ivHeader;
    56 
    57         @BindView(R.id.tv_title)
    58         TextView tvTitle;
    59         @BindView(R.id.tv_detail)
    60         TextView tvDetail;
    61         @BindView(R.id.tv_time)
    62         TextView tvTime;
    63 
    64         public ViewHolder(View itemView) {
    65             super(itemView);
    66             ButterKnife.bind(this, itemView);
    67         }
    68     }
    69 }

    效果图:

  • 相关阅读:
    E-R图转换成关系模型
    折叠表格
    ICE在Linux下的安装
    yum 安装gcc
    dll和so文件区别与构成
    linux进入图形界面的方法
    ACE vs Boost: Singleton的实现
    ACE与ASIO之间关于Socket编程的比较
    Linux 下编译安装ACE时遇到的问题及解决
    Linux下安装、配置ACE
  • 原文地址:https://www.cnblogs.com/Linccy/p/5659084.html
Copyright © 2020-2023  润新知