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
- Android_RxJava + Retrofit + MVP雏形
- MVP + Retrofit
- Retrofit+MVP模式学习
- MVP+Dagger2+Retrofit+Rxjava
- Retrofit实践(MVP+RxJava)
- Rxjava+MVP+Retrofit强强联合
- MVP、Retrofit、RxJava、RxBus
- Rxjava+retrofit+mvp整合
- Retrofit+RxAndroid+MVP
- MVP+Retrofit+RxAndroid实例
- MVP+retrofit+rxjava
- Android MVP +Retrofit+RxJava
- 最新Retrofit + RxJava + MVP
- Retrofit+mvp简单实例
- MVP+Retrofit+Rxjava实战
- RxJava+Retrofit+MVP+Dagger2
- MVP+Retrofit+RxJava
- Retrofit+RxJava+Fresco+MVP
- SpringBoot配置属性之MVC
- Android GitHub汇总
- 调用IRtlDirectory 接口
- linux shell中yes_or_no()函数返回值的问题
- 二维数组外围之和
- Android_RxJava + Retrofit + MVP雏形
- Linux 下安装JDK.设置环境变量
- 第一篇博客
- 从JVM分析Java的类的加载和卸载机制
- C语言指针的*p++ ,*p(++), (*p)++,*++p的使用
- Yii2使用的工具总结
- SpringBoot配置属性之Server
- ORACLE手工完全恢复
- 总结fUI