編輯:關於android開發
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 }
效果圖:
Android_JSON數據分析 一.JSON的簡介: JSON建構於兩種結構: (1)“名稱/值”對的集合(A collection of na
Android自定義控件之仿汽車之家下拉刷新 關於下拉刷新的實現原理我在上篇文章Android自定義控件之仿美團下拉刷新中已經詳細介紹過了,這篇文章主要介紹表盤的動畫實
我的android學習經歷16,android學習經歷16tomcat的下載安裝 1.下載tomcat 在百度中輸入tomcat可以直接出現他的英文官網 htt
Android中使用Notification實現進度通知欄(示例三),notification進度條我們在使用APP的過程中,軟件會偶爾提示我們進行版本更新,我們點擊確認