Skip to content

Instantly share code, notes, and snippets.

@mataku
Last active September 9, 2018 10:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mataku/bd83f548f45b077c0511b77d3bea601c to your computer and use it in GitHub Desktop.
Save mataku/bd83f548f45b077c0511b77d3bea601c to your computer and use it in GitHub Desktop.
// ...
implementation "android.arch.lifecycle:viewmodel:$versions.architectureComponents"
implementation "android.arch.lifecycle:extensions:$versions.architectureComponents"
// ...
import android.arch.lifecycle.ViewModel
import com.mataku.scrobscrob.app.model.entity.Artist
import com.mataku.scrobscrob.app.model.entity.Album
class MusicContentViewModel : ViewModel() {
var artists = mutableListOf<Artist>()
var albums = mutableListOf<Album>()
}
package com.mataku.scrobscrob.app.ui.fragment.artist
import android.arch.lifecycle.ViewModelProviders
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.mataku.scrobscrob.R
import com.mataku.scrobscrob.app.model.MusicContentViewModel
import com.mataku.scrobscrob.app.model.entity.Album
import com.mataku.scrobscrob.app.presenter.TopAlbumsPresenter
import com.mataku.scrobscrob.databinding.FragmentTopArtistsBinding
class TopAlbumsContentFragment : Fragment() {
private lateinit var binding: FragmentTopAlbumsBinding
private val presenter = TopAlbumsPresenter()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_top_albums, null, false)
view?.let {
binding = DataBindingUtil.bind(it)!!
setUp()
}
return view
}
override fun show(albums: List<Album>) {
viewmodel.albums.addAll(albums)
// データ渡して UI に反映
}
private fun setUp() {
this.activity?.let {
val viewmodel = ViewModelProviders.of(it).get(MusicContentViewModel::class.java)
if (viewmodel.albums.isNotEmpty()) {
// データがあれば通信せずにそれを使って表示
} else {
presenter.getTopAlbums()
}
}
}
}
package com.mataku.scrobscrob.app.ui.fragment.artist
import android.arch.lifecycle.ViewModelProviders
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.mataku.scrobscrob.R
import com.mataku.scrobscrob.app.model.MusicContentViewModel
import com.mataku.scrobscrob.app.model.entity.Artist
import com.mataku.scrobscrob.app.presenter.TopArtistsPresenter
import com.mataku.scrobscrob.databinding.FragmentTopArtistsBinding
class TopArtistsContentFragment : Fragment() {
private lateinit var binding: FragmentTopArtistsBinding
private val presenter = TopArtistsPresenter()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_top_artists, null, false)
view?.let {
binding = DataBindingUtil.bind(it)
setUp()
}
return view
}
override fun show(artists: List<Artist>) {
viewmodel.artists.addAll(artists)
// データ渡して UI に反映
}
private fun setUp() {
this.activity?.let {
val viewmodel = ViewModelProviders.of(it).get(MusicContentViewModel::class.java)
if (viewmodel.artists.isNotEmpty()) {
// データがあれば通信せずにそれを使って表示
} else {
presenter.getTopArtists()
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment