package com.example.rxjavakuangjia1.utils; /** * Created by HP on 2017/12/5. */ public class BaseUrl { public static String url="http://api.tianapi.com/";
}
首先先写下接口类
然后使用Retrofit拼接接口package com.example.rxjavakuangjia1.utils; import com.example.rxjavakuangjia1.bean.Bean; import retrofit2.http.GET; import rx.Observable; /** * Created by HP on 2017/12/5. */ public interface BaseRetrofit { @GET("nba/?key=71e58b5b2f930eaf1f937407acde08fe&num=10") Observable<Bean> getCall(); //@Query("key")int key,@Query("num")String num }
生成bean类这里就不写了
package com.example.rxjavakuangjia1.view; import com.example.rxjavakuangjia1.bean.Bean; /** * Created by HP on 2017/12/5. */ public interface IView { void show(Bean bean); }然后去生成view层的东西package com.example.rxjavakuangjia1.model; import com.example.rxjavakuangjia1.bean.Bean; import com.example.rxjavakuangjia1.utils.BaseRetrofit; import com.example.rxjavakuangjia1.utils.BaseUrl; 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; /** * Created by HP on 2017/12/5. */ public class Model { public void getData(Observer<Bean> observer){ // OkHttpClient okHttpClient=new OkHttpClient.Builder() // .build(); Retrofit retrofit=new Retrofit.Builder() .baseUrl(BaseUrl.url) // .client(okHttpClient) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); BaseRetrofit baseRetrofit=retrofit.create(BaseRetrofit.class); Observable<Bean> observable=baseRetrofit.getCall(); observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); } }再去生成model层package com.example.rxjavakuangjia1.preseter; import com.example.rxjavakuangjia1.bean.Bean; import com.example.rxjavakuangjia1.model.Model; import com.example.rxjavakuangjia1.view.IView; import rx.Observer; /** * Created by HP on 2017/12/5. */ public class Presenter { IView iView; private final Model model; public Presenter(IView iView) { this.iView = iView; model = new Model(); } public void GetUrl(){ model.getData(new Observer<Bean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Bean bean) { iView.show(bean); } }); } public void delete(){ iView=null; } }最后去生成perseter类package com.example.rxjavakuangjia1.utils; import android.app.Application; import com.facebook.drawee.backends.pipeline.Fresco; /** * Created by HP on 2017/12/5. */ public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }如果使用Fresco必须首先进行初始化package com.example.rxjavakuangjia1; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import com.example.rxjavakuangjia1.bean.Bean; import com.example.rxjavakuangjia1.preseter.Presenter; import com.example.rxjavakuangjia1.view.IView; import com.jcodecraeer.xrecyclerview.XRecyclerView; import static android.R.attr.data; public class MainActivity extends AppCompatActivity implements IView { private XRecyclerView xrecy; private Presenter presenter; // private TextView ttt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xrecy = (XRecyclerView) findViewById(R.id.xrecy); presenter = new Presenter(this); presenter.GetUrl(); } @Override public void show(Bean bean) { System.out.println("===========" + data + bean); LinearLayoutManager manager = new LinearLayoutManager(this); xrecy.setLayoutManager(manager); xrecy.setAdapter(new Adapter(this, bean)); } @Override protected void onDestroy() { super.onDestroy(); presenter.delete(); } }再去写下主类package com.example.rxjavakuangjia1; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.rxjavakuangjia1.bean.Bean; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; import com.jcodecraeer.xrecyclerview.XRecyclerView; /** * Created by HP on 2017/12/5. */ public class Adapter extends XRecyclerView.Adapter<Adapter.MyViewHolder>{ Context context; private TextView tv; // private List<Bean.NewslistBean> data; private Bean bean; // private ImageView sim; private SimpleDraweeView sim; public Adapter(Context context, Bean bean) { this.context=context; this.bean=bean; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=View.inflate(context,R.layout.item,null); MyViewHolder holder=new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { tv.setText(bean.getNewslist().get(position).getTitle()); // sim.setImageURI(bean.getNewslist().get(position).getPicUrl()); DraweeController controller = Fresco.newDraweeControllerBuilder() .setUri(bean.getNewslist().get(position).getPicUrl()) .setAutoPlayAnimations(true) .build(); sim.setController(controller); // Glide.with(context).load(bean.getNewslist().get(position).getPicUrl()).into(sim); } @Override public int getItemCount() { return bean.getNewslist().size(); } public class MyViewHolder extends RecyclerView.ViewHolder { public MyViewHolder(View itemView) { super(itemView); //img = itemView.findViewById(R.id.img); tv = itemView.findViewById(R.id.tv); sim=itemView.findViewById(R.id.sim); } } }这个便是适配器类<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.rxjavakuangjia1.MainActivity"> <!--<TextView--> <!--android:id="@+id/ttt"--> <!--android:layout_width="wrap_content"--> <!--android:layout_height="wrap_content" />--> <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/xrecy" android:layout_width="match_parent" android:layout_height="match_parent"> </com.jcodecraeer.xrecyclerview.XRecyclerView> </LinearLayout>这个是主类的布局文件<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv" android:text="2323" android:layout_width="match_parent" android:layout_height="wrap_content" /> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/sim" fresco:roundAsCircle="true" android:layout_width="100dp" android:layout_height="100dp" /> <!--<ImageView--> <!--android:id="@+id/imager"--> <!--android:background="@mipmap/ic_launcher"--> <!--android:layout_weight="2"--> <!--android:layout_width="match_parent"--> <!--android:layout_height="wrap_content" />--> </LinearLayout>这个是item的布局dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' compile 'io.reactivex:rxjava:1.2.1' compile 'io.reactivex:rxandroid:1.2.1' compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' compile 'com.squareup.okhttp3:okhttp:3.1.2' //okhttp依赖 compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.squareup.okio:okio:1.13.0' compile 'com.facebook.fresco:fresco:0.11.0' compile 'com.jcodecraeer:xrecyclerview:1.3.2' compile 'com.github.bumptech.glide:glide:4.0.0' }最后在把导入的依赖写上吧算是有头有尾吧