Skip to content

Commit a500182

Browse files
author
Karl
committed
添加服务器返回数据统一格式转换
1 parent 6fc93a2 commit a500182

File tree

5 files changed

+45
-5
lines changed

5 files changed

+45
-5
lines changed

app/src/main/java/com/xiasuhuei321/gank_kotlin/MainActivity.kt

+16
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@ package com.xiasuhuei321.gank_kotlin
22

33
import android.os.Bundle
44
import android.support.v7.app.AppCompatActivity
5+
import android.util.Log
56
import android.view.Window
67
import android.view.WindowManager
8+
import com.xiasuhuei321.gank_kotlin.datasource.DataSource
9+
import com.xiasuhuei321.gank_kotlin.datasource.DataSourceImpl
10+
import com.xiasuhuei321.gank_kotlin.datasource.bean.PostType
711
import com.xiasuhuei321.gank_kotlin.extension.shortToast
812
import kotlinx.android.synthetic.main.activity_main.*
913

@@ -18,10 +22,22 @@ class MainActivity : AppCompatActivity() {
1822
weatherIv.setOnClickListener {
1923
shortToast("weather icon be clicked")
2024
}
25+
26+
2127
}
2228

2329
override fun onResume() {
2430
super.onResume()
31+
DataSourceImpl
32+
.getData(PostType.ANDROID)
33+
.subscribe(
34+
{
35+
list->Log.e("RPG","list ---> " + list)
36+
},
37+
{
38+
e->e.printStackTrace()
39+
}
40+
)
2541
}
2642

2743
override fun onDestroy() {

app/src/main/java/com/xiasuhuei321/gank_kotlin/datasource/DataSource.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ interface DataSource {
1515
fun getData(type: String): Observable<List<GankData>>
1616

1717
// 获取服务器数据,每页数据默认为10, 页码默认为1
18-
fun getRemoteData(type: String, pageIndex: Int = 1, count: Int = 10): Observable<List<GankData>>
18+
fun getRemoteData(type: String, count: Int,pageIndex: Int): Observable<List<GankData>>
1919

2020
// 清除本地指定缓存
2121
fun clearData(type: String)

app/src/main/java/com/xiasuhuei321/gank_kotlin/datasource/DataSourceImpl.kt

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package com.xiasuhuei321.gank_kotlin.datasource
22

3+
import android.util.Log
4+
import com.xiasuhuei321.gank_kotlin.app
35
import com.xiasuhuei321.gank_kotlin.datasource.bean.GankData
6+
import com.xiasuhuei321.gank_kotlin.datasource.bean.JsonResult
47
import com.xiasuhuei321.gank_kotlin.datasource.bean.Weather
58
import com.xiasuhuei321.gank_kotlin.datasource.local.LocalDataSource
69
import com.xiasuhuei321.gank_kotlin.datasource.local.LocalDataSourceImpl
710
import com.xiasuhuei321.gank_kotlin.datasource.remote.RemoteDataSource
811
import com.xiasuhuei321.gank_kotlin.datasource.remote.RemoteDataSourceImpl
12+
import com.xiasuhuei321.gank_kotlin.extension.handleResult
13+
import com.xiasuhuei321.gank_kotlin.extension.io_main
914
import io.reactivex.Observable
15+
import io.reactivex.functions.Function
1016

1117
/**
1218
* Created by coderFan on 2017/8/11.
@@ -32,11 +38,14 @@ object DataSourceImpl : DataSource {
3238
}
3339

3440
override fun getData(type: String): Observable<List<GankData>> {
35-
TODO("获取数据,进行网络请求,加载失败再从本地读取缓存")
41+
return getRemoteData(type,10,1)
3642
}
3743

38-
override fun getRemoteData(type: String, pageIndex: Int, count: Int): Observable<List<GankData>> {
39-
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
44+
override fun getRemoteData(type: String, count: Int, pageIndex: Int): Observable<List<GankData>> {
45+
return remote
46+
.getRemoteData(type,10,1)
47+
.compose(handleResult())
48+
.io_main()
4049
}
4150

4251
/**

app/src/main/java/com/xiasuhuei321/gank_kotlin/extension/RxExtension.kt

+15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.xiasuhuei321.gank_kotlin.extension
22

3+
import com.xiasuhuei321.gank_kotlin.datasource.bean.JsonResult
34
import io.reactivex.Flowable
45
import io.reactivex.Observable
6+
import io.reactivex.ObservableTransformer
57
import io.reactivex.android.schedulers.AndroidSchedulers
68
import io.reactivex.schedulers.Schedulers
79

@@ -20,3 +22,16 @@ fun <T> Observable<T>.io_main(): Observable<T> {
2022
fun <T> Flowable<T>.io_main(): Flowable<T> {
2123
return subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
2224
}
25+
26+
fun <T> handleResult(): ObservableTransformer<JsonResult<T>, T> {
27+
return ObservableTransformer<JsonResult<T>, T>() { observable ->
28+
observable.flatMap { jsonResult ->
29+
when (jsonResult.error) {
30+
false -> Observable.just(jsonResult.results)
31+
true -> Observable.error(Exception("数据加载失败"))
32+
}
33+
}
34+
}
35+
}
36+
37+

app/src/main/java/com/xiasuhuei321/gank_kotlin/weather/WeatherPresenter.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import com.xiasuhuei321.gank_kotlin.datasource.bean.Weather
1111
*/
1212
class WeatherPresenter(override var v: BaseContract.View?) : WeatherContract.Presenter{
1313
override fun getWeather(): Weather {
14-
DataSourceImpl
14+
// DataSourceImpl
1515
return Weather()
1616
}
1717

0 commit comments

Comments
 (0)