简单实现Rectrofit+RXJAVA+Fresco

首先导入依赖:

    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.nostra13.universalimageloader:universal-image-loader:1.9.5'
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    compile 'com.android.support:mediarouter-v7:25.0.0'
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.android.support:recyclerview-v7:25.0.0'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.facebook.fresco:fresco:0.11.0'

主Main


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;


import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observable;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

public class MainActivity extends AppCompatActivity {
    private HomeAdapter mAdapter;
    private RecyclerView mRecyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerView  = (RecyclerView) findViewById(R.id.id_recyclerview);
        getUrljson1();
    }
    private void getUrljson1(){
        Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.Urljson1).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();
        ApiService apiService = retrofit.create(ApiService.class);
        Observable<Users> muser = apiService.getUser();
        muser.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Users>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(Users users) {
                        mRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
                        mRecyclerView.setAdapter(mAdapter = new HomeAdapter(users.getNewslist(),MainActivity.this));
                    }
                });


    };

}

Api类

public class Api {
    public static final String Urljson1 = "https://api.tianapi.com/wxnew/";
//    public static final String Urljson2="https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10";
//    public static final String Urljson3="http://www.yulin520.com/a2a/impressApi/news/mergeList?sign=C7548DE604BCB8A17592EFB9006F9265&pageSize=10&gender=2&ts=1871746850&page=1";
}

ApiService 类


import retrofit2.http.GET;
import rx.Observable;

/**
 * Created by wangjiao on 2017/11/3.
 */

public interface ApiService {
    @GET("?key=8d6e3228d25298f13af4fc40ce6c9679&num=20&page=")
    Observable<Users> getUser();
}

HomeAdapter 适配器


import android.content.Context;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.interfaces.DraweeController;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 * Created by wangjiao on 2017/11/3.
 */

public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>
{
    List<Users.NewslistBean> userses;
    Context context;

    public HomeAdapter(List<Users.NewslistBean> userses, Context context) {
        this.userses = userses;
        this.context = context;
    }

    SimpleDraweeView image;
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_home, parent, false));
        return holder;
    }


    @Override
    public void onBindViewHolder(MyViewHolder holder, int position)
    {
        holder.tv.setText(userses.get(position).getTitle());
        Uri uri =  Uri.parse(userses.get(position).getPicUrl());
        DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setUri(uri)
                .setAutoPlayAnimations(true)
                .build();
        image.setController(controller);

    }

    @Override
    public int getItemCount()
    {
        return userses.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder
    {

        TextView tv;

        public MyViewHolder(View view)
        {
            super(view);
            tv = (TextView) view.findViewById(R.id.text);
            image = (SimpleDraweeView) view.findViewById(R.id.image);

        }
    }
}

MyApp类

import android.app.Application;

import com.facebook.drawee.backends.pipeline.Fresco;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

/**
 * 1. 类的用途
 * 2. @author forever
 * 3. @date 2017/9/8 12:33
 */

public class MyApp extends Application {
    public static MyApp mInstance;
    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
        ImageLoaderConfiguration aDefault = ImageLoaderConfiguration.createDefault(getApplicationContext());
        ImageLoader.getInstance().init(aDefault);
        //必须初始化Fresco,不然加载不出来图片
        Fresco.initialize(this);
    }
    public static MyApp getInstance() {
        return mInstance;
    }

}

封装User类


import java.util.List;

/**
 * Created by wangjiao on 2017/11/3.
 */

public class Users {

    /**
     * code : 200
     * msg : success
     * newslist : [{"ctime":"2017-11-03","title":"长沙3名市管干部受到党纪重处分","description":"红网","picUrl":"https://t1.qpic.cn/mblogpic/48da2c609d0a7f9d083e/2000","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509706512&signature=Te*2gO2rGnYcmIDbSqr3PEmTOvtepT3IDW6HMlkuRmTulEwyaSil9G-1CNWlu2fu8HVpkb5NAhHUgiYujzEzowfSLLHSVnAZ97zau5MaFHA="},{"ctime":"2017-11-03","title":"九旬老人突然走失,附近新村居民一起帮家属寻找!你见过他么?","description":"社会传真","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-28950100.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509706512&signature=zJekcz1RjF6mOhoCfKHnYXaBdPUjgTQoQRyLXCsD8zDxGfP09iql*7ce2*8tohODUdZFXoOXGCAA5n3AoFdFGzbWrlJKU4NlL7oFshssl2k="},{"ctime":"2017-11-03","title":"【行摄金秋】时光荏苒你最美好,一同走进临安指南村,探访华东最美古村落,赏醉美五彩秋景(11月11日)","description":"余姚新闻网","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-57192418.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509706511&signature=FWiU9-FL1CSsACLfxR0AqxPotSv-YQDguAI*e8sXMUFqxe778DiRIpqx5nZc2BEKs839ifICzXKBanlGV2XGrdVmC1Gn3rm60Btm3YRE*gY="},{"ctime":"2017-11-03","title":"快看!省属事业单位招聘职位表出炉 在苏岗位有哪些?","description":"社会传真","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-28950100.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509706511&signature=upIvz1GERXXUSRjx9x7N8yBRzRfGUO5Q3vlT*MiZID9MnXDKlo1c5YkXsze20xlCKFWBs*WFWP54JvC2tOUzlc5FeYI70nIcAMZcWvdTBV0="},{"ctime":"2017-11-03","title":"直降7℃+7级大风,明后两天冷空气又要来巢湖搞事情!冷到你想哭\u2026","description":"巢湖发布","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-57192651.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509706511&signature=qx2JHW7bGLljb*wUyo6JeW-zoEa*LR9HT8b4csB3vjYVuEHdq5cGMWkc5yWcE5XUHoj41eEpYsSIN2P*0TKBkPZ9xGapf2Md819ESEbMyz8="},{"ctime":"2017-11-03","title":"汉族语言特点","description":"大雅古琴网","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-33867854.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703241&signature=Odk06F8xCCb61fgU6kg97K714fLfPkNxIxOng-i12EftI7m08Oghodex6fBUTPg0m*yO6jk4PdX-xmVHBtsxOWppKTnonsvtt1CxjHIBqJM="},{"ctime":"2017-11-03","title":"江云祥新作:问君何能尔,心远地自偏","description":"青藤艺术","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-57107113.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703240&signature=pBkTxif8j0Bd8wmc9UI99QN7gHv7K4l3HRzGu6vqMaQBRafN1zbcIiqLjY58SHkgBRo9FmI7yh1DQ1sD4bK5HmhicHpYMU8Rax2M9og2pPo="},{"ctime":"2017-11-03","title":"恽寿平:绘画的最高境界在于传神","description":"青藤艺术","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-57107118.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703240&signature=qKsqZVxzt1wRNwJ1VW68nQ*JUrWnvsxQkYNH0aO-NcnyXJiYc2W1noYc75xgKaYi5zkSSbSFIJeVelIQxBTfjh2faIGM5PIxvKmUBjzdfwY="},{"ctime":"2017-11-03","title":"老北京话\u201c猫儿腻\u201d和猫有关吗?","description":"皇城根儿胡同串子","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-57098183.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703240&signature=ARKNC7eteib70HYKeQsL2dHnHg7P9IAgm0RwAi0i9Q*lPN8ruQlvSMrr9Fe6OewbNpAwK7h0cWr*rtSX3COklRP-4quK0N3bLsfUuP7f8QA="},{"ctime":"2017-11-03","title":"市场:四轮生肖邮品目前市场价格","description":"集邮杂志","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-37619088.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703239&signature=1vntbXeWNaeRPxzOSjCeuNYKCZA9aE2bD9WtGxoDqM8N*OaxuhNQBte7aVmrkarEapEhi8Vi8GHR9*hobnZSCsQEDO7aSwvXE1WOKF2Ch5s="},{"ctime":"2017-11-03","title":"明年不是二胎了","description":"集邮杂志","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-37619088.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703239&signature=KVYbYj4oNUKtYIgvp54xC2hQ82PfKCLi3AH*Y1aJnO2K3m2sysg9CzPxkmazlJ8cV8bbBND32ykUdsQAneQL7dMVYyyLEJnFO*lntbSyB-E="},{"ctime":"2017-11-03","title":"名著也可以如此有趣?四大名著中的歇后语汇总!","description":"湖南考试招生","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-37622005.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703239&signature=dOxOP82Uk5h39lVgBUMPVES0hce2z7MSQlq1X2hI*z2Vo572M9XavK-ZerBaiyZDZxNfLrUvQFq*OJzQ0VFLK6k7uNiY4Nn2W0g3f4mc-Qg="},{"ctime":"2017-11-03","title":"我们仨的读书会","description":"新东方","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-57090684.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703238&signature=TJrptke1WIEWtWjlaIe5dkLajvlJxxoyP3yQ5syUzoXe0wHI9u3cTMQvKQqwSxE1hBQ3mA*JwGSnZA5D8YEjqrfZcD8WwD*o4pf2ikZFizI="},{"ctime":"2017-11-03","title":"诺奖得主石黑一雄:真诚,是通往人心的最好途径","description":"新东方","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-57090644.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703238&signature=5MjlmhDN7XtAHm9*v5mJf90BGvoWpxSZTTL9cM0*ndfwRwHLZIm1UT6EFv5Xb*lxbTwAnQ*OBCYHyTrLC9lvUSwzewwZj-oRaSt7HeUkPvI="},{"ctime":"2017-11-03","title":"禅意竹雕,换个方式惊世骇俗!","description":"植物网","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-56636068.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703238&signature=DCh0rnBdLB09YzVoSRoKTBp64FJ49R2laUJSquWmennH4DSnKkr-3i4pfpS*rtAAHoDwXIeVlCCrnsN25GRup5QCfPdAcAOZWidhgSxkFTY="},{"ctime":"2017-11-03","title":"广购跨省开分店,书店转型升级还能这么玩?","description":"出版商务周报","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-29259560.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703237&signature=n0RNWL5Nmtl3K5Yl9Sk-iDDBE47j-piNc9mZkKoZ6licvHa5mUP-pbRxsyMpTELrh*X6ATHgtAI1YXkxAlnt*gUSu23OJDzmhTusyBkAwXQ="},{"ctime":"2017-11-03","title":"荐馆 | 有的地方暖心,这个博物馆暖\u2026\u2026脚","description":"蝌蚪五线谱","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-30961035.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703237&signature=Qc*06*bx6ZdCbJY8JVnu-JKQFaigqaYddi4shuCG30W29aOXkzu7rjZ2ecolQwAAjaKM01d4wZiMXeZXc7chg-N3XVJSfzJ7St-2dkYRmkw="},{"ctime":"2017-11-03","title":"崖柏火了,老外们都不淡定了!!!","description":"崖柏","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-57086563.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703237&signature=NOwGF4TQNzSim*YZ9BdiwM7lEJGvlen0jNda63w5G8rE3jEnkvPoCD8lIpk*fBVPwyL-QtOQcEbDuJ9wjt-LHHYyss--B8VRv3DsnS-fRbw="},{"ctime":"2017-11-03","title":"【热门报价】11月3日中国集币在线钱币报价","description":"集币在线","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-37625028.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703236&signature=uGBF2dWkxriTOnzV19lPggtr47*A6JLgIPiOy00JCSFOWKbjU14Zj2LfHgnemRl9MR1LpPmZvfHZghwqEVMsHbQZJ8mx9*IpGDvw6nTS*Sg="},{"ctime":"2017-11-03","title":"【纸币】第二套人民币图文详解,用过的人都老了!","description":"集币在线","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-37625028.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509703236&signature=1hmsAo3dQfR96BiJRpJ3GAY2rnVc4i4XWnkYSHAB2srhA0TTtdKj68XpOvSSKwe1VsUWFopIROi0DD8rjExM6qKpoP-qfzRnn3HjTlKGfcE="}]
     */

    private int code;
    private String msg;
    private List<NewslistBean> newslist;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public List<NewslistBean> getNewslist() {
        return newslist;
    }

    public void setNewslist(List<NewslistBean> newslist) {
        this.newslist = newslist;
    }

    public static class NewslistBean {
        /**
         * ctime : 2017-11-03
         * title : 长沙3名市管干部受到党纪重处分
         * description : 红网
         * picUrl : https://t1.qpic.cn/mblogpic/48da2c609d0a7f9d083e/2000
         * url : https://mp.weixin.qq.com/s?src=16&ver=466&timestamp=1509706512&signature=Te*2gO2rGnYcmIDbSqr3PEmTOvtepT3IDW6HMlkuRmTulEwyaSil9G-1CNWlu2fu8HVpkb5NAhHUgiYujzEzowfSLLHSVnAZ97zau5MaFHA=
         */

        private String ctime;
        private String title;
        private String description;
        private String picUrl;
        private String url;

        public String getCtime() {
            return ctime;
        }

        public void setCtime(String ctime) {
            this.ctime = ctime;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        public String getPicUrl() {
            return picUrl;
        }

        public void setPicUrl(String picUrl) {
            this.picUrl = picUrl;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }
    }
}

Main.xml

    <android.support.v7.widget.RecyclerView
        android:id="@+id/id_recyclerview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

item布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    xmlns:fresco="http://schemas.android.com/apk/res-auto">
    //这里SimpleDraweeView可以实现图片加载错误显示默认图片
    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/image"
        android:layout_margin="5dp"
        android:layout_width="100dp"
        android:layout_height="100dp"
        fresco:actualImageScaleType="focusCrop"
        fresco:placeholderImage="@mipmap/ic_launcher"
        fresco:placeholderImageScaleType="focusCrop"
        fresco:progressBarImage="@mipmap/ic_launcher"
        fresco:progressBarImageScaleType="focusCrop"
        fresco:progressBarAutoRotateInterval="5000"
        fresco:failureImage="@mipmap/ic_launcher"
        fresco:failureImageScaleType="focusCrop"
        fresco:retryImage="@mipmap/ic_launcher"
        fresco:retryImageScaleType="focusCrop"
        fresco:fadeDuration="5000"
        fresco:backgroundImage="@android:color/holo_orange_light"
        fresco:roundAsCircle="true"
        fresco:roundedCornerRadius="30dp"
        fresco:roundTopLeft="true"
        fresco:roundTopRight="true"
        fresco:roundBottomLeft="true"
        fresco:roundBottomRight="true"
        fresco:roundingBorderWidth="5dp"
        fresco:roundingBorderColor="#008dd7"
        />
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="100dp" />
</LinearLayout>

最后记得在AndroidManifest.xml中添加网络权限与android:name=”.MyApp”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值