Pārlūkot izejas kodu

Renamed MainActivity in app to AppTestActivity, show titles of 10 recent photos in the activity

Ana Sekuloski 3 gadi atpakaļ
vecāks
revīzija
4aff05f001

+ 4 - 0
app/build.gradle

@@ -29,6 +29,10 @@ android {
     kotlinOptions {
         jvmTarget = '1.8'
     }
+
+    viewBinding {
+        enabled = true
+    }
 }
 
 dependencies {

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -12,7 +12,7 @@
         android:supportsRtl="true"
         android:theme="@style/Theme.LiveLikeAndroidChallenge">
         <activity
-            android:name="com.livelike.flickersearchlibrary.ui.FlickrPhotosActivity"
+            android:name=".AppTestActivity"
             android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />

+ 29 - 0
app/src/main/java/com/livelike/livelikeandroidchallenge/AppTestActivity.kt

@@ -0,0 +1,29 @@
+package com.livelike.livelikeandroidchallenge
+
+import android.os.Bundle
+import androidx.activity.viewModels
+import androidx.appcompat.app.AppCompatActivity
+import androidx.lifecycle.lifecycleScope
+import com.livelike.livelikeandroidchallenge.databinding.ActivityMainBinding
+
+class AppTestActivity : AppCompatActivity() {
+
+    private val testViewModel: FlickrServiceTestViewModel by viewModels()
+
+    private val views: ActivityMainBinding by lazy {
+        ActivityMainBinding.inflate(layoutInflater)
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(views.root)
+
+        testViewModel.photos.observe(this) { photosTitles ->
+            views.textView.text = photosTitles
+        }
+
+        lifecycleScope.launchWhenCreated {
+            testViewModel.getRecentPhotosTitles()
+        }
+    }
+}

+ 24 - 0
app/src/main/java/com/livelike/livelikeandroidchallenge/FlickrServiceTestViewModel.kt

@@ -0,0 +1,24 @@
+package com.livelike.livelikeandroidchallenge
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import com.livelike.flickersearchlibrary.Flickr
+import kotlinx.coroutines.launch
+
+class FlickrServiceTestViewModel : ViewModel() {
+
+    private val _photosTitles = MutableLiveData<String>()
+    val photos: LiveData<String> = _photosTitles
+
+    fun getRecentPhotosTitles() = viewModelScope.launch {
+        val flickrPhotos = Flickr.getRecentPhotos(10)
+        var photosTitles = "Recent photos titles:\n"
+        flickrPhotos.onEach { photoItem ->
+            photosTitles = photosTitles.plus(photoItem.title).plus('\n')
+        }
+        _photosTitles.postValue(photosTitles)
+    }
+
+}

+ 0 - 24
app/src/main/java/com/livelike/livelikeandroidchallenge/FlickrServiceViewModel.kt

@@ -1,24 +0,0 @@
-package com.livelike.livelikeandroidchallenge
-
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import androidx.lifecycle.ViewModel
-import androidx.lifecycle.viewModelScope
-import com.livelike.flickersearchlibrary.Flickr
-import com.livelike.flickersearchlibrary.ui.model.PhotoItem
-import kotlinx.coroutines.launch
-
-class FlickrServiceViewModel : ViewModel() {
-
-    private val _photos = MutableLiveData<List<PhotoItem>>()
-    val photos: LiveData<List<PhotoItem>> = _photos
-
-    fun searchFlickrPhotos(searchQuery: String?) = viewModelScope.launch {
-        _photos.postValue(Flickr.search(searchQuery))
-    }
-
-    fun getRecentPhotos() = viewModelScope.launch {
-        _photos.postValue(Flickr.getRecentPhotos())
-    }
-
-}

+ 0 - 25
app/src/main/java/com/livelike/livelikeandroidchallenge/MainActivity.kt

@@ -1,25 +0,0 @@
-package com.livelike.livelikeandroidchallenge
-
-import android.os.Bundle
-import android.util.Log
-import androidx.activity.viewModels
-import androidx.appcompat.app.AppCompatActivity
-import androidx.lifecycle.lifecycleScope
-
-class MainActivity : AppCompatActivity() {
-
-    private val viewModel: FlickrServiceViewModel by viewModels()
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        setContentView(R.layout.activity_main)
-
-        viewModel.photos.observe(this) {
-            Log.d("LiveLikeTest: ", "Received result: $it")
-        }
-
-        lifecycleScope.launchWhenCreated {
-            viewModel.getRecentPhotos()
-        }
-    }
-}

+ 2 - 2
app/src/main/res/layout/activity_main.xml

@@ -4,12 +4,12 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".MainActivity">
+    tools:context=".AppTestActivity">
 
     <TextView
+        android:id="@+id/textView"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="Hello World!"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"