Skip to content

Commit dfa4881

Browse files
author
Karl
committed
实现remote数据请求demo
1 parent 6aba493 commit dfa4881

File tree

7 files changed

+72
-59
lines changed

7 files changed

+72
-59
lines changed

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

+7
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,24 @@ import com.xiasuhuei321.gank_kotlin.extension.shortToast
99
import kotlinx.android.synthetic.main.activity_main.*
1010

1111
class MainActivity : AppCompatActivity() {
12+
val data = DataSource()
1213
override fun onCreate(savedInstanceState: Bundle?) {
1314
super.onCreate(savedInstanceState)
1415
supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
1516
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
1617
WindowManager.LayoutParams.FLAG_FULLSCREEN)
1718
setContentView(R.layout.activity_main)
19+
1820
weatherIv.setOnClickListener {
1921
shortToast("weather icon be clicked")
2022
}
2123
}
2224

25+
override fun onResume() {
26+
super.onResume()
27+
data.getRemoteData()
28+
}
29+
2330
override fun onDestroy() {
2431
super.onDestroy()
2532
weatherWv.onDestroy()

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

+10-8
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
11
package com.xiasuhuei321.gank_kotlin.datasource
22

3+
import android.util.Log
34
import com.xiasuhuei321.gank_kotlin.datasource.bean.PostType
4-
import com.xiasuhuei321.gank_kotlin.datasource.local.LocalDataImpl
55
import com.xiasuhuei321.gank_kotlin.datasource.remote.RemoteDataImpl
6-
import com.xiasuhuei321.gank_kotlin.extension.LogUtil
6+
import com.xiasuhuei321.gank_kotlin.datasource.remote.RemoteDataSource
77
import com.xiasuhuei321.gank_kotlin.extension.io_main
88

99
/**
1010
* Created by xiasuhuei321 on 2017/8/11.
1111
* author:luo
1212
1313
*/
14-
object DataSource {
15-
val TAG: String = "DataSource"
16-
// val server = RemoteDataImpl()
17-
val local = LocalDataImpl()
14+
class DataSource {
15+
private val remote :RemoteDataSource
16+
17+
init {
18+
remote = RemoteDataImpl()
19+
}
1820

1921
fun getRemoteData(){
20-
RemoteDataImpl.INSTANCE
22+
remote
2123
.getRemoteData(PostType.ANDROID,10,1)
2224
.io_main()
2325
.subscribe({
24-
jsonResult-> LogUtil.d(jsonResult.toString())
26+
jsonResult-> Log.w("okhttp","content--->${jsonResult}")
2527
},{
2628
e-> e.printStackTrace()
2729
})

app/src/main/java/com/xiasuhuei321/gank_kotlin/datasource/bean/Data.kt

+2
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,5 @@ data class GankData(var _id:String,
1616
var url:String,
1717
var used:Boolean,
1818
var who:String)
19+
20+

app/src/main/java/com/xiasuhuei321/gank_kotlin/datasource/net/ApiStore.kt app/src/main/java/com/xiasuhuei321/gank_kotlin/datasource/net/ApiService.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import retrofit2.http.Path
1313
* author:luo
1414
1515
*/
16-
interface ApiStore {
16+
interface ApiService {
1717
/**
1818
* http://gank.io/api/data/数据类型/请求个数/第几页
1919
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.xiasuhuei321.gank_kotlin.datasource.net
2+
3+
import android.util.Log
4+
import com.xiasuhuei321.gank_kotlin.datasource.bean.API
5+
import okhttp3.Interceptor
6+
import okhttp3.OkHttpClient
7+
import okhttp3.logging.HttpLoggingInterceptor
8+
import retrofit2.Retrofit
9+
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
10+
import retrofit2.converter.gson.GsonConverterFactory
11+
12+
/**
13+
* Created by Karl on 2017/9/7 0007.
14+
* Retrofit Client
15+
*/
16+
17+
object Network {
18+
19+
private val retrofit:Retrofit
20+
private val okHttpClient:OkHttpClient
21+
22+
init {
23+
val logging = Interceptor{chain ->
24+
val request = chain.request()
25+
Log.w("okhttp","okhttp--->"+request.url().toString())
26+
chain.proceed(request)
27+
}
28+
29+
okHttpClient =
30+
OkHttpClient.Builder().addInterceptor(logging).build()
31+
32+
retrofit =
33+
Retrofit.Builder()
34+
.baseUrl(API.BASE_PATH)
35+
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
36+
.addConverterFactory(GsonConverterFactory.create())
37+
.client(okHttpClient)
38+
.build()
39+
40+
41+
}
42+
43+
val service:ApiService by lazy { retrofit.create(ApiService::class.java) }
44+
45+
}
46+

app/src/main/java/com/xiasuhuei321/gank_kotlin/datasource/net/ReHelper.kt

-33
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package com.xiasuhuei321.gank_kotlin.datasource.remote
22

3-
import com.xiasuhuei321.gank_kotlin.datasource.net.ApiStore
43
import com.xiasuhuei321.gank_kotlin.datasource.bean.GankData
54
import com.xiasuhuei321.gank_kotlin.datasource.bean.JsonResult
6-
import com.xiasuhuei321.gank_kotlin.datasource.bean.TechBean
7-
import com.xiasuhuei321.gank_kotlin.datasource.net.ReHelper
8-
import com.xiasuhuei321.gank_kotlin.extension.io_main
5+
import com.xiasuhuei321.gank_kotlin.datasource.net.Network
96
import io.reactivex.Observable
107

118

@@ -14,22 +11,14 @@ import io.reactivex.Observable
1411
* author:luo
1512
1613
*/
17-
class RemoteDataImpl private constructor(): RemoteDataSource {
14+
class RemoteDataImpl :RemoteDataSource {
1815

19-
private var apiStore: ApiStore? = null
16+
override fun getRemoteData(type: String, count: Int, pageIndex: Int):
17+
Observable<JsonResult<List<GankData>>> {
2018

21-
init {
22-
if (apiStore==null) apiStore = ReHelper.getInstance().create(ApiStore::class.java)
23-
}
24-
25-
companion object {
26-
val INSTANCE:RemoteDataImpl by lazy { this.INSTANCE }
27-
}
19+
return Network.service
20+
.getCategoricalData(type,count = count.toString(),pageIndex = pageIndex.toString())
2821

29-
override fun getRemoteData(type: String, count: Int, pageIndex: Int): Observable<JsonResult<List<GankData>>> {
30-
return apiStore!!.getCategoricalData(type,count.toString(),pageIndex.toString())
3122
}
3223

33-
34-
3524
}

0 commit comments

Comments
 (0)