Skip to content

Instantly share code, notes, and snippets.

View MinaSamy's full-sized avatar

Mina Samy MinaSamy

  • Hamburg, Germany
View GitHub Profile
class SecondFragment: Fragment() {
private lateinit var viewModel: DemoViewModel
override fun onCreate(savedInstanceState: Bundle ? ) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProviders.of(activity).get(DemoViewModel::class.java)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup ? , savedInstanceState: Bundle ? ) : View ? {
class MainFragment: Fragment() {
private lateinitvar viewModel: DemoViewModel
var buttonListener: OnSecondFragmentButtonClickListener ? =null
override fun onCreate(savedInstanceState: Bundle ? ) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProviders.of(activity).get(DemoViewModel::class.java)
}
class MainActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle ? ) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textViewNumbers = findViewById < TextView > (R.id.text_view_numbers)
val viewModel = ViewModelProviders.of(this).get(DemoViewModel::class.java)
viewModel.numbersLiveData.observe(this, object: Observer < List < Int >> {
class DemoViewModel: ViewModel() {
private val numbers = mutableListOf < Int > ()
private val _numbersLiveDate = MutableLiveData < List < Int >> ()
val numbersLiveData: LiveData < List < Int >> get() {
if (_numbersLiveDate.value == null) {
loadInitialData()
}
return _numbersLiveDate
override fun onStop() {
super.onStop()
dataSource.addItem()
}
class DemoDataSourceObserverTest {
@get: Rule
var rule: TestRule = InstantTaskExecutorRule()
@Mock lateinit var observer: Observer < List < Int >> @Mock lateinit
var lifeCycleOwner: LifecycleOwner
lateinit var lifeCycle: LifecycleRegistry
val dataSource = DemoDataSource()
class DemoDataSourceTest {@get: Rule
var rule: TestRule = InstantTaskExecutorRule()
@Test
fun shouldLoadData() {
val dataSource = DemoDataSource()
dataSource.loadNumbers()
assertEquals(listOf(1, 2, 3, 4), dataSource.numberLiveData.value)
}
@Test
fun shouldLoadData() {
val dataSource = DemoDataSource()
dataSource.loadNumbers()
assertEquals(listOf(1, 2, 3, 4), dataSource.numberLiveData.value)
}
val source1 = MutableLiveData<Int>()
val source2 = MutableLiveData<Int>()
val merger = MediatorLiveData<Int>()
merger.addSource(source1, { number -> merger.postValue(number) })
merger.addSource(source2, { number -> merger.postValue(number) })
merger.observe(this, object : Observer<Int> {
override fun onChanged(number: Int?) {
Log.i("Merger", number.toString())
val sumLiveData = Transformations.switchMap(dataSource.numberLiveData, {
numbers - >MutableLiveData < Int > ().apply {
postValue(numbers.sum())
}
})
sumLiveData.observe(this, object: Observer < Int > {
override fun onChanged(sum: Int ? ) {
Log.i("Sum", sum.toString())
}