结合retrofit和rxjava的使用
2017-12-10 18:32
411 查看
BasePresenter
public class BasePresenter<V> {
public V view;
public void Attach(V view){
this.view=view;
}
public void dettach(){
this.view=null;
}
}
BaseActivity
public abstract class BaseActivity<V,P extends BasePresenter<V>> extends Activity {
public P presenter;
public abstract P initpresenter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
presenter=initpresenter();
}
@Override
protected void onResume() {
super.onResume();
presenter.Attach((V)this);
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.dettach();
}
}
MyApplication
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
MyMolde
public class MyMolde {
public void GetDataFromNet(String key, String num, AbstractObserver<Bean> observer){
Map<String,String> map=new HashMap<>();
map.put("key",key);
map.put("num",num);
APIFactory.getInstance().get("nba/",map,observer);
}
}
MyPresenter
public class MyPresenter extends BasePresenter<IView> {
public MyMolde molde;
public MyPresenter() {
molde=new MyMolde();
}
public void getNow(int num){
molde.GetDataFromNet("71e58b5b2f930eaf1f937407acde08fe", num + "", new AbstractObserver<Bean>() {
@Override
public void onSuccess(Bean bean) {
view.showdata(bean);
}
@Override
public void onFailure(int code) {
}
});
}
}
IView
public interface IView {
public void showdata(Bean bean);
}
MainActivity
public class MainActivity extends BaseActivity<IView,MyPresenter> implements IView {
Handler handler=new Handler();
@BindView(R.id.xrv)
XRecyclerView xrv;
int num=20;
@Override
public MyPresenter initpresenter() {
return new MyPresenter();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
presenter.getNow(20);
xrv.setLayoutManager(new LinearLayoutManager(this));
}
@Override
public void showdata(Bean bean) {
final MyAdapter adapter=new MyAdapter(this,bean);
xrv.setAdapter(adapter);
xrv.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
presenter.getNow(20);
adapter.notifyDataSetChanged();
xrv.refreshComplete();
}
@Override
public void onLoadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
num=num+5;
presenter.getNow(num);
adapter.notifyDataSetChanged();
xrv.loadMoreComplete();
}
},2000);
}
});
}
@Override
protected void onResume() {
super.onResume();
presenter.Attach(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.dettach();
}
}
public class BasePresenter<V> {
public V view;
public void Attach(V view){
this.view=view;
}
public void dettach(){
this.view=null;
}
}
BaseActivity
public abstract class BaseActivity<V,P extends BasePresenter<V>> extends Activity {
public P presenter;
public abstract P initpresenter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
presenter=initpresenter();
}
@Override
protected void onResume() {
super.onResume();
presenter.Attach((V)this);
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.dettach();
}
}
MyApplication
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
MyMolde
public class MyMolde {
public void GetDataFromNet(String key, String num, AbstractObserver<Bean> observer){
Map<String,String> map=new HashMap<>();
map.put("key",key);
map.put("num",num);
APIFactory.getInstance().get("nba/",map,observer);
}
}
MyPresenter
public class MyPresenter extends BasePresenter<IView> {
public MyMolde molde;
public MyPresenter() {
molde=new MyMolde();
}
public void getNow(int num){
molde.GetDataFromNet("71e58b5b2f930eaf1f937407acde08fe", num + "", new AbstractObserver<Bean>() {
@Override
public void onSuccess(Bean bean) {
view.showdata(bean);
}
@Override
public void onFailure(int code) {
}
});
}
}
IView
public interface IView {
public void showdata(Bean bean);
}
MainActivity
public class MainActivity extends BaseActivity<IView,MyPresenter> implements IView {
Handler handler=new Handler();
@BindView(R.id.xrv)
XRecyclerView xrv;
int num=20;
@Override
public MyPresenter initpresenter() {
return new MyPresenter();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
presenter.getNow(20);
xrv.setLayoutManager(new LinearLayoutManager(this));
}
@Override
public void showdata(Bean bean) {
final MyAdapter adapter=new MyAdapter(this,bean);
xrv.setAdapter(adapter);
xrv.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
presenter.getNow(20);
adapter.notifyDataSetChanged();
xrv.refreshComplete();
}
@Override
public void onLoadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
num=num+5;
presenter.getNow(num);
adapter.notifyDataSetChanged();
xrv.loadMoreComplete();
}
},2000);
}
});
}
@Override
protected void onResume() {
super.onResume();
presenter.Attach(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.dettach();
}
}
相关文章推荐
- 项目重构经验三——Rxjava的使用,RxBus,RxManager,结合retrofit的使用
- Retrofit2.0的学习以及Rxjava与Retrofit2的结合使用
- RxJava和Retrofit结合使用详解
- RxJava,Retrofit,OkHttp3结合使用
- Retrofit2.0和Rxjava结合使用的简单记录
- Retrofit结合RxJava使用指南
- Retrofit和RxJava结合使用
- Android RxJava/RxAndroid结合Retrofit使用
- APP实用开发—RxJava 和 Retrofit 结合使用
- Retrofit结合Rxjava初步使用
- Retrofit与RxJava的结合使用
- RxJava和Retrofit2.0的结合使用
- retrofit2+rxjava的结合使用
- 使用retrofit与Rxjava结合出的错误:java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker
- RXJava+Retrofit的结合使用,来同时请求多个网络接口,我们使用的是merge或mergeArray操作符
- MVP+ Retrofit+RxJava+XRecyclerView+TabLayout+Fresco结合使用
- Android 中 Retrofit 结合 RxJava使用
- Android 优雅的让RxJava2.0+Retrofit2.0结合使用
- Retrofit2.0(二)结合Rxjava2使用
- Retrofit和RxJava结合使用例子分析