|
@@ -6,6 +6,7 @@ import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.appcompat.widget.SearchView
|
|
import androidx.appcompat.widget.SearchView
|
|
import androidx.lifecycle.lifecycleScope
|
|
import androidx.lifecycle.lifecycleScope
|
|
import androidx.recyclerview.widget.GridLayoutManager
|
|
import androidx.recyclerview.widget.GridLayoutManager
|
|
|
|
+import androidx.recyclerview.widget.RecyclerView
|
|
import com.livelike.flickersearchlibrary.databinding.ActivityFlickrPhotosBinding
|
|
import com.livelike.flickersearchlibrary.databinding.ActivityFlickrPhotosBinding
|
|
import com.livelike.flickersearchlibrary.ui.adapter.FlickrPhotosAdapter
|
|
import com.livelike.flickersearchlibrary.ui.adapter.FlickrPhotosAdapter
|
|
|
|
|
|
@@ -20,6 +21,7 @@ class FlickrPhotosActivity : AppCompatActivity() {
|
|
|
|
|
|
private companion object {
|
|
private companion object {
|
|
private const val PHOTOS_DEFAULT_COLUMN_COUNT = 3
|
|
private const val PHOTOS_DEFAULT_COLUMN_COUNT = 3
|
|
|
|
+ private const val BOTTOM_DIRECTION = 1
|
|
}
|
|
}
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
@@ -44,12 +46,12 @@ class FlickrPhotosActivity : AppCompatActivity() {
|
|
|
|
|
|
private fun setupListeners() {
|
|
private fun setupListeners() {
|
|
views.searchView.setOnSearchClickListener {
|
|
views.searchView.setOnSearchClickListener {
|
|
- viewModel.searchPhotos(views.searchView.query.toString())
|
|
|
|
|
|
+ search(views.searchView.query.toString())
|
|
}
|
|
}
|
|
|
|
|
|
views.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
|
views.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
|
override fun onQueryTextSubmit(query: String?): Boolean {
|
|
override fun onQueryTextSubmit(query: String?): Boolean {
|
|
- viewModel.searchPhotos(query)
|
|
|
|
|
|
+ search(query)
|
|
return true
|
|
return true
|
|
}
|
|
}
|
|
|
|
|
|
@@ -57,11 +59,20 @@ class FlickrPhotosActivity : AppCompatActivity() {
|
|
return true
|
|
return true
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
+
|
|
|
|
+ views.gridView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
|
|
|
+ override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
|
|
|
+ super.onScrolled(recyclerView, dx, dy)
|
|
|
|
+ if (!recyclerView.canScrollVertically(BOTTOM_DIRECTION)) {
|
|
|
|
+ viewModel.loadMorePhotos()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
}
|
|
}
|
|
|
|
|
|
private fun setupObservers() {
|
|
private fun setupObservers() {
|
|
viewModel.photos.observe(this) {
|
|
viewModel.photos.observe(this) {
|
|
- photosAdapter.setItems(it)
|
|
|
|
|
|
+ photosAdapter.appendItems(it)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -70,4 +81,9 @@ class FlickrPhotosActivity : AppCompatActivity() {
|
|
viewModel.getRecentPhotos()
|
|
viewModel.getRecentPhotos()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private fun search(searchQuery: String?) {
|
|
|
|
+ photosAdapter.clearItems()
|
|
|
|
+ viewModel.searchPhotos(searchQuery)
|
|
|
|
+ }
|
|
}
|
|
}
|