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