retrofit+ok+rxjava+fresco的demo


这是m层

package cui.com.myapplication.model;

import cui.com.myapplication.Bean;
import retrofit2.http.GET;
import rx.Observable;

/**
 * Created by ZMoffice on 2017.12.1.
 */

public interface Mmodel {
    @GET("v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0")
    Observable<Bean> getbean();
}

这是v层

package cui.com.myapplication.view;

import java.util.List;

import cui.com.myapplication.Bean;

/**
 * Created by ZMoffice on 2017.12.1.
 */

public interface Mview {
    void  setdata(List<Bean.SongListBean> list);
}
这是p层

package cui.com.myapplication.presenter;

import android.content.Context;
import android.util.Log;

import java.util.List;

import cui.com.myapplication.Bean;
import cui.com.myapplication.LoggingInterceptor;
import cui.com.myapplication.model.Mmodel;
import cui.com.myapplication.view.Mview;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

/**
 * Created by ZMoffice on 2017.12.1.
 */

public class Mpresenter {
    Mview view;
    Mmodel model;
    Context context;

    public Mpresenter(Mview view, Context context) {
        this.view = view;
        this.context = context;
    }
    public void getdata()
    {
        OkHttpClient client=new OkHttpClient.Builder().
                addInterceptor(new LoggingInterceptor()).
                build();
        Retrofit retrofit=new Retrofit.Builder()
                .baseUrl("http://tingapi.ting.baidu.com/")
                .client(client)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        model=retrofit.create(Mmodel.class);
        model.getbean()
                .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<Bean>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(Bean bean) {
                Log.i("111111", "onNext: "+bean.toString());
                List<Bean.SongListBean> list=bean.getSong_list();

                view.setdata(list);
            }
        });
    }
}
mainactivity

package cui.com.myapplication;

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

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cui.com.myapplication.presenter.Mpresenter;
import cui.com.myapplication.view.Mview;

public class MainActivity extends AppCompatActivity implements Mview {

    @BindView(R.id.rv)
    RecyclerView rv;
    @BindView(R.id.bt)
    Button bt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        LinearLayoutManager l = new LinearLayoutManager(MainActivity.this);
        rv.setLayoutManager(l);
        Mpresenter p = new Mpresenter(this, this);
        p.getdata();
    }

    @Override
    public void setdata(List<Bean.SongListBean> list) {
        Myadp adp = new Myadp(list, MainActivity.this);
        rv.setAdapter(adp);
    }

    @OnClick(R.id.bt)
    public void onViewClicked() {
        Toast.makeText(MainActivity.this,"笑死我了",Toast.LENGTH_SHORT).show();
    }
}
适配器

package cui.com.myapplication;

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

import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 * Created by ZMoffice on 2017.12.1.
 */

public class Myadp extends RecyclerView.Adapter<Myadp.Vh> {
    List<Bean.SongListBean> list;
    Context context;

    public Myadp(List<Bean.SongListBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public Vh onCreateViewHolder(ViewGroup parent, int viewType) {
        View v=View.inflate(context, R.layout.item,null);
        return new Vh(v);
    }

    @Override
    public void onBindViewHolder(Vh holder, int position) {
        Uri uri=Uri.parse(list.get(position).getPic_small());
        Log.i("img=============",list.get(position).getPic_small());
        holder.img.setImageURI(uri);
        Log.i("img=============",list.get(position).getTitle());
        holder.tv.setText(list.get(position).getTitle());
    }

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

    class Vh extends RecyclerView.ViewHolder {
        SimpleDraweeView img;
        TextView tv;

        public Vh(View v) {
            super(v);
            img =  v.findViewById(R.id.img);
            tv = v.findViewById(R.id.tv);
        }


    }
}
bean类可以自己替换,拦截器也可以自定义,

一定注意fresco的初始化
App

package cui.com.myapplication;

import android.app.Application;

import com.facebook.drawee.backends.pipeline.Fresco;

/**
 * Created by ZMoffice on 2017.12.1.
 */

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值