diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3280dc9..6ff7882 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,7 +10,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/app/src/main/java/keijumt/devandroid/activity/ApiActivity.kt b/app/src/main/java/keijumt/devandroid/activity/ApiActivity.kt new file mode 100644 index 0000000..b470238 --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/activity/ApiActivity.kt @@ -0,0 +1,12 @@ +package keijumt.devandroid.activity + +import android.os.Bundle +import keijumt.devandroid.R + +class ApiActivity : BaseActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_api) + } +} \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/activity/MainActivity.kt b/app/src/main/java/keijumt/devandroid/activity/MainActivity.kt deleted file mode 100644 index 97fdcf6..0000000 --- a/app/src/main/java/keijumt/devandroid/activity/MainActivity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package keijumt.devandroid.activity - -import android.os.Bundle -import keijumt.devandroid.R - -class MainActivity : BaseActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - } -} \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/di/module/ActivityModule.kt b/app/src/main/java/keijumt/devandroid/di/module/ActivityModule.kt index 003fc82..428579f 100644 --- a/app/src/main/java/keijumt/devandroid/di/module/ActivityModule.kt +++ b/app/src/main/java/keijumt/devandroid/di/module/ActivityModule.kt @@ -2,7 +2,7 @@ import dagger.Module import dagger.android.ContributesAndroidInjector -import keijumt.devandroid.activity.MainActivity +import keijumt.devandroid.activity.ApiActivity /** * Module: Activity 定義 @@ -11,6 +11,6 @@ internal abstract class ActivityModule { @ContributesAndroidInjector(modules = arrayOf(FragmentModule::class)) - internal abstract fun mainActivity(): MainActivity + internal abstract fun apiActivity(): ApiActivity } \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/di/module/FragmentModule.kt b/app/src/main/java/keijumt/devandroid/di/module/FragmentModule.kt index 9f55371..ae8e328 100644 --- a/app/src/main/java/keijumt/devandroid/di/module/FragmentModule.kt +++ b/app/src/main/java/keijumt/devandroid/di/module/FragmentModule.kt @@ -2,7 +2,7 @@ import dagger.Module import dagger.android.ContributesAndroidInjector -import keijumt.devandroid.fragment.MainFragment +import keijumt.devandroid.fragment.ApiFragment /** * Module: Fragment 定義 @@ -11,6 +11,6 @@ internal abstract class FragmentModule { @ContributesAndroidInjector - internal abstract fun mainFragment(): MainFragment + internal abstract fun apiFragment(): ApiFragment } \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/di/module/ViewModelModule.kt b/app/src/main/java/keijumt/devandroid/di/module/ViewModelModule.kt index d3d8223..63144ad 100644 --- a/app/src/main/java/keijumt/devandroid/di/module/ViewModelModule.kt +++ b/app/src/main/java/keijumt/devandroid/di/module/ViewModelModule.kt @@ -6,7 +6,7 @@ import dagger.MapKey import dagger.Module import dagger.multibindings.IntoMap -import keijumt.devandroid.viewmodel.MainViewModel +import keijumt.devandroid.viewmodel.ApiViewModel import keijumt.devandroid.viewmodel.ViewModelFactory import kotlin.reflect.KClass @@ -24,8 +24,8 @@ @Binds @IntoMap - @ViewModelKey(MainViewModel::class) - abstract fun bindMainViewModel(viewModel: MainViewModel): ViewModel + @ViewModelKey(ApiViewModel::class) + abstract fun bindApiViewModel(viewModel: ApiViewModel): ViewModel @Binds abstract fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory diff --git a/app/src/main/java/keijumt/devandroid/fragment/ApiFragment.kt b/app/src/main/java/keijumt/devandroid/fragment/ApiFragment.kt new file mode 100644 index 0000000..9a062cd --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/fragment/ApiFragment.kt @@ -0,0 +1,31 @@ +package keijumt.devandroid.fragment + + +import android.arch.lifecycle.ViewModelProviders +import android.databinding.DataBindingUtil +import android.os.Bundle +import android.support.v4.app.FragmentActivity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import keijumt.devandroid.R +import keijumt.devandroid.databinding.FragmentApiBinding +import keijumt.devandroid.viewmodel.ApiViewModel + +class ApiFragment : BaseFragment() { + + lateinit var binding: FragmentApiBinding + lateinit var mainViewModel: ApiViewModel + + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + val nonNullActivity: FragmentActivity = activity ?: return null + binding = DataBindingUtil.inflate(inflater, R.layout.fragment_api, null, false) + mainViewModel = ViewModelProviders.of(nonNullActivity, viewModelFactory).get(ApiViewModel::class.java) + binding.mainViewModel = mainViewModel + return binding.root + } + + +} diff --git a/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt b/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt deleted file mode 100644 index 39f865a..0000000 --- a/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt +++ /dev/null @@ -1,31 +0,0 @@ -package keijumt.devandroid.fragment - - -import android.arch.lifecycle.ViewModelProviders -import android.databinding.DataBindingUtil -import android.os.Bundle -import android.support.v4.app.FragmentActivity -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import keijumt.devandroid.R -import keijumt.devandroid.databinding.FragmentMainBinding -import keijumt.devandroid.viewmodel.MainViewModel - -class MainFragment : BaseFragment() { - - lateinit var binding: FragmentMainBinding - lateinit var mainViewModel: MainViewModel - - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { - val nonNullActivity: FragmentActivity = activity ?: return null - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_main, null, false) - mainViewModel = ViewModelProviders.of(nonNullActivity, viewModelFactory).get(MainViewModel::class.java) - binding.mainViewModel = mainViewModel - return binding.root - } - - -} diff --git a/app/src/main/java/keijumt/devandroid/viewmodel/ApiViewModel.kt b/app/src/main/java/keijumt/devandroid/viewmodel/ApiViewModel.kt new file mode 100644 index 0000000..dac7a91 --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/viewmodel/ApiViewModel.kt @@ -0,0 +1,36 @@ +package keijumt.devandroid.viewmodel + +import android.arch.lifecycle.ViewModel +import android.databinding.ObservableField +import io.reactivex.rxkotlin.subscribeBy +import io.reactivex.schedulers.Schedulers +import keijumt.devandroid.api.response.mapper.toAddressEntity +import keijumt.devandroid.repository.PostalCodeRepository +import javax.inject.Inject + +class ApiViewModel @Inject constructor(val postalCodeRepository: PostalCodeRepository) : ViewModel() { + + val postalCode = ObservableField("") + var address = ObservableField() + + fun search() { + if (postalCode.get().isNullOrEmpty()) { + return + } + postalCodeRepository.search(postalCode.get()?.toInt()!!) + .subscribeOn(Schedulers.io()) + .subscribeBy( + onSuccess = { postalCode -> + if (postalCode.results != null) { + val addressEntity = postalCode.toAddressEntity() + address.set(addressEntity.address) + } else { + address.set("Address does not exist.") + } + }, + onError = { + address.set("") + } + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt b/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt deleted file mode 100644 index c3e9b1a..0000000 --- a/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt +++ /dev/null @@ -1,36 +0,0 @@ -package keijumt.devandroid.viewmodel - -import android.arch.lifecycle.ViewModel -import android.databinding.ObservableField -import io.reactivex.rxkotlin.subscribeBy -import io.reactivex.schedulers.Schedulers -import keijumt.devandroid.api.response.mapper.toAddressEntity -import keijumt.devandroid.repository.PostalCodeRepository -import javax.inject.Inject - -class MainViewModel @Inject constructor(val postalCodeRepository: PostalCodeRepository) : ViewModel() { - - val postalCode = ObservableField("") - var address = ObservableField() - - fun search() { - if (postalCode.get().isNullOrEmpty()) { - return - } - postalCodeRepository.search(postalCode.get()?.toInt()!!) - .subscribeOn(Schedulers.io()) - .subscribeBy( - onSuccess = { postalCode -> - if (postalCode.results != null) { - val addressEntity = postalCode.toAddressEntity() - address.set(addressEntity.address) - } else { - address.set("Address does not exist.") - } - }, - onError = { - address.set("") - } - ) - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_api.xml b/app/src/main/res/layout/activity_api.xml new file mode 100644 index 0000000..c30d74f --- /dev/null +++ b/app/src/main/res/layout/activity_api.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index b44e8d6..0000000 --- a/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_api.xml b/app/src/main/res/layout/fragment_api.xml new file mode 100644 index 0000000..08528aa --- /dev/null +++ b/app/src/main/res/layout/fragment_api.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + +