From bf5f248950d922892f85f870fee0bb85cd01950d Mon Sep 17 00:00:00 2001 From: KWY0218 Date: Fri, 12 Nov 2021 03:30:51 +0900 Subject: [PATCH] finish pr --- .../myapplication/LectureDetailsActivity.kt | 29 ++++++++++++++++++- .../com/example/myapplication/MainActivity.kt | 2 +- .../example/myapplication/MainViewModel.kt | 10 +++++++ .../myapplication/adapter/HanGangAdapter.kt | 1 + .../myapplication/api/RetrofitInstance.kt | 13 +++++++++ .../example/myapplication/api/SimpleApi.kt | 8 ++++- .../myapplication/model/LectureDetails.kt | 8 +++++ .../myapplication/repository/Repository.kt | 5 ++++ .../example/myapplication/util/Constants.kt | 1 + 9 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/example/myapplication/model/LectureDetails.kt diff --git a/app/src/main/java/com/example/myapplication/LectureDetailsActivity.kt b/app/src/main/java/com/example/myapplication/LectureDetailsActivity.kt index d9f5824..d461ff7 100644 --- a/app/src/main/java/com/example/myapplication/LectureDetailsActivity.kt +++ b/app/src/main/java/com/example/myapplication/LectureDetailsActivity.kt @@ -2,10 +2,37 @@ package com.example.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.util.Log +import androidx.databinding.DataBindingUtil +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import com.example.myapplication.databinding.ActivityLectureDetailsBinding +import com.example.myapplication.repository.Repository class LectureDetailsActivity : AppCompatActivity() { + lateinit var binding: ActivityLectureDetailsBinding + private lateinit var viewModel: MainViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_lecture_details) + val id = intent.getIntExtra("lecture_id", 1) + binding = DataBindingUtil.setContentView(this, R.layout.activity_lecture_details) + viewModel = ViewModelProvider(this, MainViewModelFactory(Repository())) + .get(MainViewModel::class.java) + + with(binding) { + with(viewModel) { + getDetail(id) + lectureDetails.observe(this@LectureDetailsActivity, Observer { response -> + if (response.isSuccessful) { + Log.d("Response1","details name: " + response.body()?.lectureDetailsName) + lectureDetailsName.text = response.body()?.lectureDetailsName + } else { + Log.d("Response1", "status: " + response.errorBody().toString()) + Log.d("Response1", "status: " + response.code().toString()) + } + }) + } + + } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/MainActivity.kt b/app/src/main/java/com/example/myapplication/MainActivity.kt index a95a2df..4f4928e 100644 --- a/app/src/main/java/com/example/myapplication/MainActivity.kt +++ b/app/src/main/java/com/example/myapplication/MainActivity.kt @@ -73,7 +73,7 @@ class MainActivity: AppCompatActivity(),GoActivity { override fun goActivity(id: Int?) { val intent = Intent(this,LectureDetailsActivity::class.java) - intent.putExtra("id",id) + intent.putExtra("lecture_id",id) startActivity(intent) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/MainViewModel.kt b/app/src/main/java/com/example/myapplication/MainViewModel.kt index 4d06200..b1f1543 100644 --- a/app/src/main/java/com/example/myapplication/MainViewModel.kt +++ b/app/src/main/java/com/example/myapplication/MainViewModel.kt @@ -4,6 +4,8 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import com.example.myapplication.api.RetrofitInstance +import com.example.myapplication.model.LectureDetails import com.example.myapplication.model.LectureResult import com.example.myapplication.model.StatusCode import com.example.myapplication.repository.Repository @@ -13,6 +15,7 @@ import retrofit2.Response class MainViewModel (private val repository: Repository): ViewModel(){ val myResponse:MutableLiveData> = MutableLiveData() val lectureList:MutableLiveData> = MutableLiveData() + val lectureDetails:MutableLiveData> = MutableLiveData() fun getStatusCode(){ viewModelScope.launch { @@ -27,6 +30,13 @@ class MainViewModel (private val repository: Repository): ViewModel(){ lectureList.value = response } } + + fun getDetail(id:Int){ + viewModelScope.launch { + val response = repository.getDetail(id) + lectureDetails.value = response + } + } } class MainViewModelFactory(private val repository: Repository):ViewModelProvider.Factory{ diff --git a/app/src/main/java/com/example/myapplication/adapter/HanGangAdapter.kt b/app/src/main/java/com/example/myapplication/adapter/HanGangAdapter.kt index 06cb3ba..5122ca6 100644 --- a/app/src/main/java/com/example/myapplication/adapter/HanGangAdapter.kt +++ b/app/src/main/java/com/example/myapplication/adapter/HanGangAdapter.kt @@ -1,5 +1,6 @@ package com.example.myapplication.adapter +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/app/src/main/java/com/example/myapplication/api/RetrofitInstance.kt b/app/src/main/java/com/example/myapplication/api/RetrofitInstance.kt index fc6fb13..65969ad 100644 --- a/app/src/main/java/com/example/myapplication/api/RetrofitInstance.kt +++ b/app/src/main/java/com/example/myapplication/api/RetrofitInstance.kt @@ -1,6 +1,7 @@ package com.example.myapplication.api import com.example.myapplication.util.Constants.Companion.BASE_URL +import com.example.myapplication.util.Constants.Companion.HANGANG_DETAILS_URL import com.example.myapplication.util.Constants.Companion.HANGANG_URL import okhttp3.OkHttpClient import retrofit2.Retrofit @@ -27,6 +28,14 @@ object RetrofitInstance { .build() } + private val hangangDetailsInstance by lazy { + Retrofit.Builder() + .baseUrl(HANGANG_DETAILS_URL) + .addConverterFactory(GsonConverterFactory.create()) + .client(unsafeOkHttpClient().build()) + .build() + } + val api: SimpleApi by lazy { retrofit.create(SimpleApi::class.java) } @@ -35,6 +44,10 @@ object RetrofitInstance { hangangInstance.create(SimpleApi::class.java) } + val hangangDetailsApi by lazy{ + hangangDetailsInstance.create(SimpleApi::class.java) + } + private fun unsafeOkHttpClient(): OkHttpClient.Builder { val trustAllCerts = arrayOf(object : X509TrustManager { override fun checkClientTrusted( diff --git a/app/src/main/java/com/example/myapplication/api/SimpleApi.kt b/app/src/main/java/com/example/myapplication/api/SimpleApi.kt index f537db1..31d61cf 100644 --- a/app/src/main/java/com/example/myapplication/api/SimpleApi.kt +++ b/app/src/main/java/com/example/myapplication/api/SimpleApi.kt @@ -1,10 +1,11 @@ package com.example.myapplication.api -import com.example.myapplication.model.Lecture +import com.example.myapplication.model.LectureDetails import com.example.myapplication.model.LectureResult import com.example.myapplication.model.StatusCode import retrofit2.Response import retrofit2.http.GET +import retrofit2.http.Path import retrofit2.http.Query interface SimpleApi { @@ -17,4 +18,9 @@ interface SimpleApi { @Query("limit")limit:Int, @Query("page")page:Int ): Response + + @GET("lectures/{id}") + suspend fun getDetail( + @Path("id")id:Int + ): Response } \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/model/LectureDetails.kt b/app/src/main/java/com/example/myapplication/model/LectureDetails.kt new file mode 100644 index 0000000..84b3198 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/model/LectureDetails.kt @@ -0,0 +1,8 @@ +package com.example.myapplication.model + +import com.google.gson.annotations.SerializedName + +data class LectureDetails( + @SerializedName("name") + var lectureDetailsName: String? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/repository/Repository.kt b/app/src/main/java/com/example/myapplication/repository/Repository.kt index f6afb47..8575209 100644 --- a/app/src/main/java/com/example/myapplication/repository/Repository.kt +++ b/app/src/main/java/com/example/myapplication/repository/Repository.kt @@ -1,6 +1,7 @@ package com.example.myapplication.repository import com.example.myapplication.api.RetrofitInstance +import com.example.myapplication.model.LectureDetails import com.example.myapplication.model.LectureResult import com.example.myapplication.model.StatusCode import retrofit2.Response @@ -13,4 +14,8 @@ class Repository { suspend fun getHangangList(limit:Int,page:Int): Response{ return RetrofitInstance.hangangApi.getHangangList(limit,page) } + + suspend fun getDetail(id:Int): Response{ + return RetrofitInstance.hangangDetailsApi.getDetail(id) + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/util/Constants.kt b/app/src/main/java/com/example/myapplication/util/Constants.kt index f33965f..87735a3 100644 --- a/app/src/main/java/com/example/myapplication/util/Constants.kt +++ b/app/src/main/java/com/example/myapplication/util/Constants.kt @@ -4,5 +4,6 @@ class Constants{ companion object{ const val BASE_URL = "https://jhi7xevof6.execute-api.ap-northeast-2.amazonaws.com" const val HANGANG_URL = "https://stage.api.hangang.in/" + const val HANGANG_DETAILS_URL = "https://stage.api.hangang.in/" } } \ No newline at end of file