【问题标题】:I need update the spinner text in another textview我需要在另一个文本视图中更新微调器文本
【发布时间】:2021-06-29 05:31:53
【问题描述】:

我在适配器中有一个微调器,用于获取食物的数量。现在,我想获取微调器文本并将其与价格相乘以获得总价格。我该怎么做?

 override fun onBindViewHolder(holder: View_Holder, position: Int) {
    val data = list[position]
    holder.spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
        override fun onNothingSelected(parent: AdapterView<*>?) {
            holder.spinner.setSelection(1)
        }

        override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
            val text:Int = parent?.getItemAtPosition(position) as Int
            holder.spinner.setSelection(text)
        }

    }
    holder.name.text = data.itemName
    holder.price.text = holder.spinner.onItemSelectedListener.toString()

这是我使用 spinner 的 createviewholder 函数。

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): View_Holder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.single_item, parent, false)
        res_name.text = "Ordering From "+list[0].itemRes
        val adapter = ArrayAdapter.createFromResource(
            context,
            R.array.quantity,
            android.R.layout.simple_spinner_item
        )
        val spinner = view.findViewById<Spinner>(R.id.spinner)
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        spinner.adapter = adapter

                return View_Holder(view)
    }

【问题讨论】:

    标签: android android-studio kotlin android-spinner


    【解决方案1】:

    参考下面的代码会有帮助

    override fun onItemSelected(arg0:AdapterView<*>, arg1:View, position: Int, id:Long) {
        val text:String = arg0?.getItemAtPosition(position).toString()
        //you should update view from here 
        holder.name.text = data.itemName
        holder.price.text = "₹ " + data.itemPrice + "/-"
    }
    

    【讨论】:

    • 当我这样做时,我收到一个错误“null cannot be cast to non-null type kotlin.String”@DharmenderManral
    • 尝试更新 onItemSelected 内部的视图,这样会更好
    • @yazhini 在视图持有者类中添加微调器。现在在onBindViewHolder 方法中,您可以访问您的holder.spinner.onItemSelectedListener 在此处完成您的项目选择代码
    • 我更新了 OnBindViewHolder。我仍然收到相同的错误“尝试在空对象引用上调用虚拟方法'java.lang.String java.lang.Object.toString()'”
    • 更正 onBindViewHolder 里面的这一行,应该是 holder.price.text = holder.spinner.getSelectedItem().toString()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多