【问题标题】:Why does my spinner not displaying selected item为什么我的微调器不显示所选项目
【发布时间】:2021-03-01 18:34:51
【问题描述】:

我的活动中有一个微调器,它从截击呼叫中获取数据。数据显示在微调器中。但是当我点击微调器中的特定项目时,它会显示。

微调器代码

private fun spinner() {

    val spinner = findViewById<Spinner>(R.id.report2Spinner)
    if (spinner != null) {
        val arrayAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, companyList)
        spinner.adapter = arrayAdapter
        spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                selectedItem = spinner.getItemAtPosition(position).toString()
                Toast.makeText(this@Report2Activity, selectedItem, Toast.LENGTH_SHORT).show()
                spinner.setSelection(position)
            }

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

            }
        }
    }
}

声明保存凌空数据的数组

var companyList: ArrayList = ArrayList()

排球

private fun jsonGetCompany() {
    //Declaring URL for JSON file
    val url = "https://mist.zp.co.za:6502/MIST.svc/CMP/M@H\$@203@R"

    val request = JsonObjectRequest(
            Request.Method.GET, url, null,
            { response ->
                try {
                    val jsonArray = response.getJSONArray("Table")
                    for (i in 0 until jsonArray.length()) {
                        //Adding variables to JSONArray
                        val item = jsonArray.getJSONObject(i)
                        companyList.add(item.getString("Company"))
                    }
                } catch (e: JSONException) {
                    e.printStackTrace()
                }
            }, { error -> error.printStackTrace() })
    //Adding request to the queue
    requestQueue?.add(request)
    //Setting timeout and retries
    request.retryPolicy = DefaultRetryPolicy(30000, 3, 1f)
}

这是我调用 spinner() 和 jsonGetCompany() 的 onCreate

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_report2)
    title = "Report 2"


    //Initialising Recyclerview
    recyclerViewReport2 = findViewById(R.id.recyclerViewReport2)
    val linearLayoutManager = LinearLayoutManager(applicationContext)
    recyclerViewReport2.layoutManager = linearLayoutManager

    //Declaring Volley requestQueue for JSON calls
    requestQueue = Volley.newRequestQueue(this)

    //Using JSON request function
    jsonGetCompany()
    spinner()

    val fromDatePicker: DatePicker = findViewById(R.id.report2FromDatePicker)
    val endDatePicker: DatePicker = findViewById(R.id.report2EndDatePicker)

    val buttonLoad: Button = findViewById(R.id.buttonLoad)
    buttonLoad.setOnClickListener {
        fromDate = "${fromDatePicker.year}-${fromDatePicker.month + 1}-${fromDatePicker.dayOfMonth}"
        endDate = "${endDatePicker.year}-${endDatePicker.month + 1}-${endDatePicker.dayOfMonth}"
        Toast.makeText(this, "Company is: $selectedItem",       Toast.LENGTH_SHORT).show()
        jsonRequestReport2Data()

        if (recyclerViewReport2.isNotEmpty()) {
            company.clear()
            report2Adapter.notifyDataSetChanged()
        }
    }
 }

【问题讨论】:

  • 我不明白你的问题,但你的代码看起来不错。当您的微调器初始化并选择该项目时,究竟发生了什么?你能澄清一下吗?
  • 我选择的微调器中的项目不显示它是选定的项目。甚至吐司也显示没有选择任何内容,它给了我一个空吐司
  • @Berkay Kireçci 我已经上传了屏幕截图来说明我的意思
  • 我刚刚添加了答案,但是如果 toast 显示没有选择任何内容,则应该还有另一个问题。
  • 你能在这行之后尝试在 volley 函数中调用 spinner() 吗:companyList.add(item.getString("Company")) .

标签: kotlin android-volley spinner


【解决方案1】:

编辑:这是因为 jsonGetCompany()spinner() 被同时调用,但 volley 异步工作。您应该在 volley 从服务器获取数据后设置适配器。从活动调用此服务器调用不是正确的方法,但它是完全不同的主题。您可以像这样简单地编辑您的代码:

 try {
      val jsonArray = response.getJSONArray("Table")
      for (i in 0 until jsonArray.length()) {
      //Adding variables to JSONArray
           val item = jsonArray.getJSONObject(i)
           companyList.add(item.getString("Company"))
      }
      setSpinner()
 } catch (e: JSONException) {
     e.printStackTrace()
 }

很高兴我能帮上忙。

【讨论】:

  • 这不起作用给我同样的显示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多