Skip to content

Commit

Permalink
10.RxJava+Retrofit+MVP模式设计
Browse files Browse the repository at this point in the history
  • Loading branch information
can committed Jun 12, 2018
1 parent 40f1912 commit e2395bb
Show file tree
Hide file tree
Showing 28 changed files with 883 additions and 44 deletions.
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
<activity android:name=".ui.QRCodeActivity"
android:screenOrientation="portrait"/>

<!--模拟请求数据-->
<activity android:name=".ui.SimulationDataActivity"
android:screenOrientation="portrait"/>

</application>

Expand Down
384 changes: 384 additions & 0 deletions app/src/main/java/com/can/canutils/bean/HomeArticleListBean.java

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion app/src/main/java/com/can/canutils/ui/HomeActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public void initData() {
user.setUserName("多啦B梦");
user.setUserSex("未知");

presenter = new HomePresenter(this,new BaseModel());
presenter = new HomePresenter(this,new BaseModel(mCompositeSubscription));

presenter.getUser(user.getUserName(),user.getUserId());
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/can/canutils/ui/LoginActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public int getLayoutId() {
@Override
public void initData() {
super.initData();
presenter = new LoginPresenter(this,new BaseModel());
presenter = new LoginPresenter(this,new BaseModel(mCompositeSubscription));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ public class NavigationActivity extends BaseActivity {
private TextView tv_login;
@BindView(id = R.id.tv_qrcode,click = true)
private TextView tv_qrcode;
@BindView(id = R.id.tv_simulation_data,click = true)
private TextView tv_simulation_data;

@Override
public int getLayoutId() {
Expand All @@ -39,7 +41,9 @@ public void setClick(View view) {
case R.id.tv_qrcode://二维码
ActivityManagerUtils.getInstance().openActivity(this,QRCodeActivity.class);
break;

case R.id.tv_simulation_data://模拟请求数据
ActivityManagerUtils.getInstance().openActivity(this,SimulationDataActivity.class);
break;
}
}
}
2 changes: 1 addition & 1 deletion app/src/main/java/com/can/canutils/ui/QRCodeActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public int getLayoutId() {
@Override
public void initData() {
super.initData();
presenter = new QRCodePresenter(this,new BaseModel());
presenter = new QRCodePresenter(this,new BaseModel(mCompositeSubscription));
dialog = new SureOrCancleDialog(this, com.can.mvp.R.style.style_sureOrCancleDialog,this);
}

Expand Down
41 changes: 41 additions & 0 deletions app/src/main/java/com/can/canutils/ui/SimulationDataActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.can.canutils.ui;

import android.util.Log;
import android.view.View;

import com.can.canutils.R;
import com.can.mvp.base.BaseRefreshActivity;
import com.can.mvp.bean.requestBean.BaseRequestBean;

/**
* Created by can on 2018/6/11.
* 模拟请求数据
*/

public class SimulationDataActivity extends BaseRefreshActivity {


@Override
public int getLayoutId() {
return R.layout.activity_simulation;
}

@Override
public void initView(View view) {
super.initView(view);
}

@Override
public BaseRequestBean getRequestParameters() {
BaseRequestBean bean = new BaseRequestBean();
bean.setRequest_url("http://www.wanandroid.com/");
bean.setObservable(manager.getHomeArticleList(0));
return bean;
}

@Override
public void ReturnNetworkData(Object result) {
Log.d("111",result.toString()+"");

}
}
11 changes: 11 additions & 0 deletions app/src/main/res/layout/activity_navigation.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,16 @@
android:background="@drawable/drawable_ffffff_f0f0f0"
/>

<TextView
android:id="@+id/tv_simulation_data"
android:text="模拟请求数据"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:gravity="center"
android:textSize="15sp"
android:textColor="#2bf"
android:background="@drawable/drawable_ffffff_f0f0f0"
/>

</LinearLayout>
14 changes: 14 additions & 0 deletions app/src/main/res/layout/activity_simulation.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:clipToPadding="false">

<com.can.mvp.views.baseviews.IRecycleView
android:id="@+id/irl"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</LinearLayout>
25 changes: 15 additions & 10 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,24 +31,29 @@ android {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.3.0'
testCompile 'junit:junit:4.12'
//导入RxJava
// compile 'io.reactivex.rxjava2:rxjava:2.0.1'
// compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
//导入kotlin
// compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
// compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
// Okhttp库
// compile 'com.squareup.okhttp3:okhttp:3.1.2'

//导入recycleview
compile 'com.android.support:recyclerview-v7:23.4.0'
//各种加载中的动画效果
compile 'com.github.ybq:Android-SpinKit:1.1.0'
//导入Tablayout
compile 'com.android.support:design:23.3.0'
//导入kotlin
// compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
// compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
// Okhttp库
// compile 'com.squareup.okhttp3:okhttp:3.1.2'
// Retrofit库
// compile 'com.squareup.retrofit2:retrofit:2.0.2'
//二维码库
compile 'com.google.zxing:core:3.2.1'
//网络请求框架Retrofit
compile 'com.squareup.retrofit2:retrofit:2.1.0'
//gson
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
//RxJava
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
//RxAndroid
compile 'io.reactivex:rxandroid:1.2.0'

}
}

34 changes: 33 additions & 1 deletion library/src/main/java/com/can/mvp/base/BaseActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,21 @@
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.view.View;

import com.can.mvp.application.BaseApplication;
import com.can.mvp.base.mvp.IBaseModel;
import com.can.mvp.base.mvp.IBaseView;
import com.can.mvp.bean.requestBean.BaseRequestBean;
import com.can.mvp.service.manager.DataManager;
import com.can.mvp.utils.AnnotationUtils;
import com.can.mvp.utils.ToastUtils;

import java.util.List;

import rx.subscriptions.CompositeSubscription;

import static com.can.mvp.application.BaseApplication.getActivityManager;

/**
Expand All @@ -36,12 +42,18 @@
* 7.onActivityResult : Fragment回调
*/

public class BaseActivity extends AppCompatActivity implements IBaseView,View.OnClickListener{
public class BaseActivity extends AppCompatActivity implements IBaseModel.IBaseRefreshInterface,IBaseView,View.OnClickListener{

public DataManager manager;
public CompositeSubscription mCompositeSubscription;

public static final String URL = "http://www.wanandroid.com/";

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
manager = new DataManager(BaseApplication.getInstance(),URL);
mCompositeSubscription = new CompositeSubscription();
init();
}

Expand All @@ -61,6 +73,12 @@ private void init() {
}
}

@Override
protected void onStop() {
super.onStop();
if(mCompositeSubscription!=null&&mCompositeSubscription.hasSubscriptions())
mCompositeSubscription.unsubscribe();
}

@Override
protected void onDestroy() {
Expand Down Expand Up @@ -203,4 +221,18 @@ public void call(String telPhone){
}
}

@Override
public BaseRequestBean getRequestParameters() {
return null;
}

@Override
public void ReturnNetworkData(Object result) {

}

@Override
public RecyclerView.Adapter getAdapter() {
return null;
}
}
85 changes: 85 additions & 0 deletions library/src/main/java/com/can/mvp/base/BaseRefreshActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.can.mvp.base;

import android.support.v7.widget.RecyclerView;
import android.view.View;

import com.can.mvp.R;
import com.can.mvp.bean.requestBean.BaseRequestBean;
import com.can.mvp.mvps.models.BaseModel;
import com.can.mvp.mvps.presenters.BasePresenter;
import com.can.mvp.mvps.views.BaseView;
import com.can.mvp.views.baseviews.IRecycleView;


/**
* Created by can on 2018/6/11.
* base下拉刷新Activity
*/

public class BaseRefreshActivity extends BaseActivity implements BaseView, IRecycleView.OnIRecycleListener {

public IRecycleView irl;
public BasePresenter basePresenter;

@Override
public int getLayoutId() {
return R.layout.activity_base_refresh;
}

@Override
public void initView(View view) {
super.initView(view);
irl = (IRecycleView) findViewById(R.id.irl);

irl.setOnIRecycleListener(this);
}

@Override
public void initData() {
super.initData();
basePresenter = new BasePresenter(this,new BaseModel(mCompositeSubscription));
basePresenter.getData(getRequestParameters(),getRequestParameters()==null?null:getRequestParameters().getObservable());
}

@Override
public void onError(String error) {
//ReturnNetworkData(error);
//ToastUtils.getInstance(this).showText(error);
}

@Override
public void onSuccess(Object success) {
ReturnNetworkData(success);
}

@Override
public void onComplete() {
irl.refreshComlete();
}


@Override
public void onRefresh() {
basePresenter.getData(getRequestParameters(),getRequestParameters()==null?null:getRequestParameters().getObservable());
}

@Override
public void onLoadMore() {

}

@Override
public BaseRequestBean getRequestParameters() {
return null;
}

@Override
public void ReturnNetworkData(Object result) {

}

@Override
public RecyclerView.Adapter getAdapter() {
return null;
}
}
27 changes: 27 additions & 0 deletions library/src/main/java/com/can/mvp/base/BaseRefreshAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.can.mvp.base;

import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;

/**
* Created by can on 2018/6/12.
* 通用适配器
*/

public class BaseRefreshAdapter extends RecyclerView.Adapter {

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

}

@Override
public int getItemCount() {
return 0;
}
}
11 changes: 9 additions & 2 deletions library/src/main/java/com/can/mvp/base/mvp/IBaseModel.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.can.mvp.base.mvp;

import android.graphics.Bitmap;
import android.support.v7.widget.RecyclerView;

import com.can.mvp.bean.requestBean.BaseRequestBean;
import com.can.mvp.bean.responseBean.User;

/**
Expand All @@ -25,13 +27,18 @@ interface onGetUserFinishedListener{

interface onGetDataFinishedListener{
void onError(String error);
void onSuccess(String result);
void onSuccess(Object result);
void onComplete();
}

interface onQRCodeListener{
void onDataError(String error);
void onSuccess(Bitmap bitmap);
}


interface IBaseRefreshInterface{
BaseRequestBean getRequestParameters();
void ReturnNetworkData(Object result);
RecyclerView.Adapter getAdapter();
}
}
Loading

0 comments on commit e2395bb

Please sign in to comment.