package com.example.testes import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import androidx.appcompat.widget.SearchView import com.example.testes.databinding.ActivityMainBinding import org.json.JSONArray import org.json.JSONException import org.json.JSONObject class MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding private fun imageListFromJson(json: JSONObject) { try { val array: JSONArray = json.getJSONArray("post") val list = BooruImage.listFromJsonArray(array) loadGrid(list) //Log.i("Image", list.toString()) } catch (e: JSONException) { e.printStackTrace() } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) val url = "https://gelbooru.com/index.php?page=dapi&s=post&q=index&json=1&limit=18" search("") binding.search.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextChange(newText: String): Boolean { return false } override fun onQueryTextSubmit(query: String): Boolean { search(query) // task HERE return false } } ) } private fun search(query: String?) { if (query.isNullOrBlank() || query == "*") { Request.getRequest( this, "https://gelbooru.com/index.php?page=dapi&s=post&q=index&json=1&limit=18", ::imageListFromJson ) } else { val url: String = assemblePostsUrl(query) Request.getRequest( this, url, ::imageListFromJson ) } } private fun assemblePostsUrl(query: String): String{ return "https://gelbooru.com/index.php?page=dapi&s=post&q=index&json=1&limit=18&tags=$query" } private fun loadGrid(images: List) { val fragmentTransaction = supportFragmentManager.beginTransaction() fragmentTransaction.replace(R.id.imageGridRecV, ImageGridFragment(images)) fragmentTransaction.addToBackStack(null) fragmentTransaction.commit() } inner class SearchListener( var callback: (String) -> Unit ) : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query : String): Boolean { callback(query) return true } override fun onQueryTextChange(query : String): Boolean { //callback(query) return true } } }