From 124a5c8c0bf83a62e4b4fff44eed20165d8e662e Mon Sep 17 00:00:00 2001 From: ThanaCS Date: Sat, 21 Nov 2020 16:19:54 +0300 Subject: [PATCH] Adding Dummy Data for test --- .idea/vcs.xml | 6 +++ .../countriesmvvm/view/CountryListAdapter.kt | 20 +++++--- .../thanaa/countriesmvvm/view/MainActivity.kt | 49 ++++++++++++++++++- .../countriesmvvm/viewmodel/ListViewModel.kt | 4 +- 4 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/thanaa/countriesmvvm/view/CountryListAdapter.kt b/app/src/main/java/com/thanaa/countriesmvvm/view/CountryListAdapter.kt index 90f4f58..09d7227 100644 --- a/app/src/main/java/com/thanaa/countriesmvvm/view/CountryListAdapter.kt +++ b/app/src/main/java/com/thanaa/countriesmvvm/view/CountryListAdapter.kt @@ -1,26 +1,34 @@ package com.thanaa.countriesmvvm.view +import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import com.thanaa.countriesmvvm.R import com.thanaa.countriesmvvm.model.Country +import kotlinx.android.synthetic.main.activity_main.view.* +import kotlinx.android.synthetic.main.item_country.view.* class CountryListAdapter(var countries:ArrayList):RecyclerView.Adapter() { - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CountryViewHolder { - TODO("Not yet implemented") + fun updateCounties (newCountry:List){ + countries.clear() + countries.addAll(newCountry) + notifyDataSetChanged() } - + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = + CountryViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_country,parent,false)) override fun getItemCount()= countries.size override fun onBindViewHolder(holder: CountryViewHolder, position: Int) { holder.bind(countries[position]) } - class CountryViewHolder(view: View):RecyclerView.ViewHolder(view){ - fun bind (country:Country){ + class CountryViewHolder(view: View):RecyclerView.ViewHolder(view){ + private val countryName = view.name + fun bind (country:Country){ + countryName.text = country.countryName } } diff --git a/app/src/main/java/com/thanaa/countriesmvvm/view/MainActivity.kt b/app/src/main/java/com/thanaa/countriesmvvm/view/MainActivity.kt index d68185d..bfe24e4 100644 --- a/app/src/main/java/com/thanaa/countriesmvvm/view/MainActivity.kt +++ b/app/src/main/java/com/thanaa/countriesmvvm/view/MainActivity.kt @@ -2,11 +2,58 @@ package com.thanaa.countriesmvvm.view import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.View +import android.widget.ListAdapter +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.thanaa.countriesmvvm.R +import com.thanaa.countriesmvvm.viewmodel.ListViewModel +import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { + lateinit var viewModel:ListViewModel + var countriesAdapter = CountryListAdapter(arrayListOf()) + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + viewModel = ViewModelProviders.of(this).get(ListViewModel::class.java) + viewModel.refresh() + + countriesList.apply { + layoutManager = GridLayoutManager(context,2) + adapter = countriesAdapter + } + + observeViewModel() + } + + private fun observeViewModel() { + + viewModel.countries.observe(this,Observer { countries -> + countries?.let { + countriesAdapter.updateCounties(it) + } + }) + + viewModel.countryLoadError.observe(this, Observer { isError -> isError?.let { + list_error.visibility = if(it) View.VISIBLE else View.GONE + } }) + + viewModel.loading.observe(this, Observer { isLoading -> isLoading?.let{ + progressBar.visibility = if(it) View.VISIBLE else View.GONE + + if(it){ + list_error.visibility =View.GONE + countriesList.visibility = View.GONE + } + } }) + + + } } -} \ No newline at end of file diff --git a/app/src/main/java/com/thanaa/countriesmvvm/viewmodel/ListViewModel.kt b/app/src/main/java/com/thanaa/countriesmvvm/viewmodel/ListViewModel.kt index 7067174..78420d8 100644 --- a/app/src/main/java/com/thanaa/countriesmvvm/viewmodel/ListViewModel.kt +++ b/app/src/main/java/com/thanaa/countriesmvvm/viewmodel/ListViewModel.kt @@ -11,12 +11,12 @@ class ListViewModel:ViewModel() { val countryLoadError = MutableLiveData() val loading = MutableLiveData() - fun fetch(){ + fun refresh(){ fetchCountries() } private fun fetchCountries(){ - var mockData:List = listOf(Country("Saudi"),Country("US")) + var mockData:List = listOf(Country("Saudi"),Country("US"),Country("Germany")) countryLoadError.value = false loading.value =false countries.value = mockData