1.首先我们要添加依赖
compile 'com.facebook.fresco:fresco:0.9.0+' compile 'com.android.support:recyclerview-v7:25.0.0+' compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.retrofit2:converter-gson:2.0.1' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
2.布局就是一个单纯的recyclerview ,子布局是一个图片和一个textview , 切记当我们使用了Fresco布局的时候我们就应该把Imageview改成SimpleDraweeView
<com.facebook.drawee.view.SimpleDraweeView android:id="@+id/image_view" android:src="@mipmap/ic_launcher" android:layout_width="50dp" android:layout_height="50dp" />
3.上代码 首先我们创建一个接口用来拼接口
public interface RequestServes { @GET("news/latest") Observable<MyBean> getString(); }
4.Fresco需要一个APP初始化
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }
5.上适配器
public class MyAdapter2 extends RecyclerView.Adapter<MyAdapter2.MyViewHodel> { private Context context; private MyBean myBean; public MyAdapter2(Context context, MyBean myBean) { this.context = context; this.myBean = myBean; } @Override public MyViewHodel onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context , R.layout.item , null); return new MyViewHodel(view); } @Override public void onBindViewHolder(MyViewHodel holder, int position) { String s = myBean.getStories().get(position).getImages().get(0); Uri uri = Uri.parse(s); holder.imageView.setImageURI(uri); holder.textView.setText(myBean.getStories().get(position).getTitle()); } @Override public int getItemCount() { List<MyBean.StoriesBean> stories = myBean.getStories(); return myBean.getStories().size(); } class MyViewHodel extends RecyclerView.ViewHolder{ TextView textView; SimpleDraweeView imageView; public MyViewHodel(View itemView) { super(itemView); imageView = (SimpleDraweeView) itemView.findViewById(R.id.image_view); textView = (TextView) itemView.findViewById(R.id.text_view); } } }
6.MainActivity
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private MyAdapter2 adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this)); Retrofit retrofit =new Retrofit.Builder() .baseUrl("http://news-at.zhihu.com/api/4/") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); RequestServes requestServes = retrofit.create(RequestServes.class); Observable<MyBean> string = requestServes.getString(); string .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<MyBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable throwable) { } @Override public void onNext(MyBean myBean) { recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this)); adapter = new MyAdapter2(MainActivity.this , myBean); recyclerView.setAdapter(adapter); } }); } }