|
@@ -0,0 +1,73 @@
|
|
|
+package com.livelike.flickersearchlibrary.ui
|
|
|
+
|
|
|
+import android.os.Bundle
|
|
|
+import androidx.activity.viewModels
|
|
|
+import androidx.appcompat.app.AppCompatActivity
|
|
|
+import androidx.appcompat.widget.SearchView
|
|
|
+import androidx.lifecycle.lifecycleScope
|
|
|
+import androidx.recyclerview.widget.GridLayoutManager
|
|
|
+import com.livelike.flickersearchlibrary.databinding.ActivityFlickrPhotosBinding
|
|
|
+import com.livelike.flickersearchlibrary.ui.adapter.FlickrPhotosAdapter
|
|
|
+
|
|
|
+class FlickrPhotosActivity : AppCompatActivity() {
|
|
|
+
|
|
|
+ private val viewModel: FlickrPhotosViewModel by viewModels()
|
|
|
+
|
|
|
+ private val views: ActivityFlickrPhotosBinding by lazy {
|
|
|
+ ActivityFlickrPhotosBinding.inflate(layoutInflater)
|
|
|
+ }
|
|
|
+ private val photosAdapter = FlickrPhotosAdapter()
|
|
|
+
|
|
|
+ private companion object {
|
|
|
+ private const val PHOTOS_DEFAULT_COLUMN_COUNT = 3
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
+ super.onCreate(savedInstanceState)
|
|
|
+ setContentView(views.root)
|
|
|
+ setupViews()
|
|
|
+ setupListeners()
|
|
|
+ setupObservers()
|
|
|
+ initPhotosList()
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun setupViews() {
|
|
|
+ views.gridView.apply {
|
|
|
+ adapter = photosAdapter
|
|
|
+ layoutManager = GridLayoutManager(
|
|
|
+ this@FlickrPhotosActivity,
|
|
|
+ PHOTOS_DEFAULT_COLUMN_COUNT
|
|
|
+ )
|
|
|
+ }
|
|
|
+ views.searchView.requestFocus()
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun setupListeners() {
|
|
|
+ views.searchView.setOnSearchClickListener {
|
|
|
+ viewModel.searchPhotos(views.searchView.query.toString())
|
|
|
+ }
|
|
|
+
|
|
|
+ views.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
|
|
+ override fun onQueryTextSubmit(query: String?): Boolean {
|
|
|
+ viewModel.searchPhotos(query)
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onQueryTextChange(newText: String?): Boolean {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun setupObservers() {
|
|
|
+ viewModel.photos.observe(this) {
|
|
|
+ photosAdapter.setItems(it)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun initPhotosList() {
|
|
|
+ lifecycleScope.launchWhenCreated {
|
|
|
+ viewModel.getRecentPhotos()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|