oligazar
1/28/2018 - 9:45 AM

Show Spinner Programmatically

private fun Toolbar.showLanguageSpinner() {

        if (findViewWithTag<Spinner>(spinnerTag) != null) return

        val spinner = AppCompatSpinner(context)
        spinner.tag = spinnerTag
        val adapter = ArrayAdapter.createFromResource(context,
                                                      R.array.languages_entries,
                                                      android.R.layout.simple_spinner_item)
        // Specify the layout to use when the list of choices appears
        adapter.setDropDownViewResource(android.R.layout.select_dialog_singlechoice)
        spinner.setPopupBackgroundResource(R.color.colorWhite)
        val postiton = context.getPreferences().getCategoriesLangPosition()
        Log.d("CategoriesFragment", "position: $postiton")
        // Apply the adapter to the spinner
        spinner.adapter = adapter
        spinner.setSelection(postiton)
        spinner.onItemSelectedListener = object: AdapterView.OnItemSelectedListener {

            override fun onNothingSelected(parent: AdapterView<*>?) {

            }

            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                if (isFirstTimeSpinner) {
                    isFirstTimeSpinner = false
                    return
                }
                context.getPreferences().saveCategoriesLangPosition(position)
                val query = getQuery()
                mAdapter.stopListening()
                createAdapter(query)
                Log.d("CategoriesFragment", "onItemSelected, position: $position, query: ${query.ref}, adapter: $mAdapter")
                recycler.adapter = mAdapter
                mAdapter.startListening()
            }
        }
        addView(spinner)
    }