Android_RxJava + Retrofit + MVP雏形

来源:互联网 发布:如何选网络机顶盒 编辑:程序博客网 时间:2024/05/17 09:28

写在最前:
简单的retrofit在线请求天气情况
配合rxjava简单处理获取的数据
mvp雏形,不过太懒了不想写了
awq


1.添加依赖

  compile fileTree(include: ['*.jar'], dir: 'libs')    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:24.2.0'    compile 'io.reactivex:rxandroid:1.2.1'    compile 'io.reactivex:rxjava:1.0.9'    compile 'com.squareup.retrofit2:converter-gson:2.1.0'    compile 'com.squareup.retrofit2:retrofit:2.1.0'    compile 'com.squareup.retrofit2:converter-scalars:2.1.0'    compile files('libs/butterknife-7.0.0.jar')    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'

2.配置权限

<uses-permission android:name="android.permission.INTERNET" />

3.主要逻辑

package com.oblivion.rxjava.model;import com.oblivion.rxjava.bean.HomeBeam;import com.oblivion.rxjava.envity.MyEnvity;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;/** * github : https://github.com/oblivion0001/AndroidStudioProjects * Blog : http://blog.csdn.net/qq_16666847 * Created by oblivion on 2016/11/25. */public class RetrofitModel {    public RetrofitModel() {    }    public HomeBeam getResString(String etCity) {        Retrofit retrofit = new Retrofit.Builder()                //http://api.map.baidu.com/telematics/v3/weather?location=%E5%98%89%E5%85%B4&output=json&ak=qXYfeO4jG61DfcHeAiCbdIPKENySbvx1                .baseUrl("http://api.map.baidu.com/telematics/v3/")                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                .addConverterFactory(GsonConverterFactory.create())                .build();        MyEnvity myEnvity = retrofit.create(MyEnvity.class);        myEnvity.getCall("etCity")                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())//在主线程更新                .subscribe(new Subscriber<HomeBeam>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                        getHomeBean(e.toString(),null);                    }                    @Override                    public void onNext(HomeBeam homeBeam) {                       getHomeBean(null,homeBeam);                    }                });        return null;    }    /**     *  @param homeBeam     * @param     */    public  HomeBeam getHomeBean(String error, HomeBeam homeBeam) {        return homeBeam;    }}

4.MainTivity

package com.oblivion.rxjava;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import com.oblivion.rxjava.model.RetrofitModel;import butterknife.Bind;import butterknife.ButterKnife;import butterknife.OnClick;public class MainActivity extends AppCompatActivity {    @Bind(R.id.tv_data)    TextView tvData;    @Bind(R.id.tv_clothes)    TextView tvClothes;    @Bind(R.id.tv_car)    TextView tvCar;    @Bind(R.id.tv_goto)    TextView tvGoto;    @Bind(R.id.tv_seek)    TextView tvSeek;    @Bind(R.id.tv_play)    TextView tvPlay;    @Bind(R.id.tv_sun)    TextView tvSun;    @Bind(R.id.bt_check)    Button btCheck;    @Bind(R.id.et_check)    EditText etCheck;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);    }    @OnClick(R.id.bt_check)    public void onClick() {        String etCity = etCheck.getText().toString().trim();        RetrofitModel retrofitModel = new RetrofitModel();        retrofitModel.getResString(etCity);    }}

5.布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <EditText        android:id="@+id/et_check"        android:layout_width="match_parent"        android:layout_height="50dp"        android:hint="请输入要查询的城市" />    <Button        android:id="@+id/bt_check"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="查询" />    <FrameLayout        android:id="@+id/fl_success"        android:layout_width="match_parent"        android:layout_height="match_parent">        <LinearLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:orientation="vertical">            <TextView                android:id="@+id/tv_data"                style="@style/textStyle"                android:text="日期" />            <TextView                android:id="@+id/tv_clothes"                style="@style/textStyle" />            <TextView                android:id="@+id/tv_car"                style="@style/textStyle" />            <TextView                android:id="@+id/tv_goto"                style="@style/textStyle" />            <TextView                android:id="@+id/tv_seek"                style="@style/textStyle" />            <TextView                android:id="@+id/tv_play"                style="@style/textStyle" />            <TextView                android:id="@+id/tv_sun"                style="@style/textStyle" />        </LinearLayout>    </FrameLayout></LinearLayout>

5.MyEntiry

package com.oblivion.rxjava.envity;import com.oblivion.rxjava.bean.HomeBeam;import retrofit2.http.GET;import retrofit2.http.Query;import rx.Observable;/** * github : https://github.com/oblivion0001/AndroidStudioProjects * Blog : http://blog.csdn.net/qq_16666847 * Created by oblivion on 2016/11/22. */public interface MyEnvity {    @GET("weather?ak=qXYfeO4jG61DfcHeAiCbdIPKENySbvx1&output=json")    Observable<HomeBeam> getCall(@Query("location") String path);}

github源码

0 0
原创粉丝点击