Skip to content

Instantly share code, notes, and snippets.

@hmmmk
Created October 24, 2018 10:32
Show Gist options
  • Save hmmmk/c4a6836d71b820e89d87c88d723b10bd to your computer and use it in GitHub Desktop.
Save hmmmk/c4a6836d71b820e89d87c88d723b10bd to your computer and use it in GitHub Desktop.
package com.izibizy.mvp.fragments.add.address.search
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import com.izibizy.R
import com.izibizy.common.base.BaseFragment
import com.izibizy.mvp.fragments.add.address.search.adapter.SearchResultsAdapter
import com.yandex.mapkit.MapKitFactory
import com.yandex.mapkit.geometry.Geometry
import com.yandex.mapkit.search.*
import com.yandex.mapkit.search.internal.SearchManagerBinding
import com.yandex.runtime.Error
import kotlinx.android.synthetic.main.fragment_search.*
class SearchFragment : BaseFragment() {
private var searchManager: SearchManager? = null
private var searchSession: Session? = null
private val adapter = SearchResultsAdapter({ item, position ->
})
private val searchTextWatcher = object : TextWatcher {
override fun afterTextChanged(s: Editable) {
submitQuery(s.toString())
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
}
private fun submitQuery(query: String) {
searchSession = (searchManager as SearchManagerBinding).submit(query, Geometry(),
SearchOptions(), object : Session.SearchListener {
override fun onSearchError(error: Error) {
Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show()
}
override fun onSearchResponse(response: Response) {
adapter.data.clear()
adapter.data.addAll(response.collection.children)
adapter.notifyDataSetChanged()
}
})
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_search, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setUpViews()
setUpListeners()
}
override fun onStop() {
MapKitFactory.getInstance().onStop()
super.onStop()
}
override fun onStart() {
super.onStart()
MapKitFactory.getInstance().onStart()
}
private fun setUpViews() {
MapKitFactory.setApiKey(resources.getString(R.string.yandex_maps_api_key))
MapKitFactory.initialize(activity)
SearchFactory.initialize(context)
searchManager = SearchFactory.getInstance().createSearchManager(SearchManagerType.COMBINED)
addressesList.adapter = adapter
}
private fun setUpListeners() {
searchEtx.addTextChangedListener(searchTextWatcher)
}
override fun getName() = "search_fragment"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment