How to customize dropdownview with image in spinner android

问题描述 投票:0回答:0

我想使所选项目下拉项目文本颜色更改,但无法通过选择和显示图像的位置粗体文本,适配器中的ondropdownview。

我可以在fragment的onItemSelected中获取选中的item位置。我需要在下拉菜单中显示所选项目的粗体和图像,仅显示所选位置。 image description

我试过这种方式,但没有帮助。 在片段中。

binding?.spinnerC?.adapter =
            FSpinnerAdapter(
                context = requireContext(),
                fruitList, posOfItemSpinnerSelected
            )

        binding?.spinnerC?.onItemSelectedListener =
            object : AdapterView.OnItemSelectedListener {
                override fun onItemSelected(
                    parent: AdapterView<*>?,
                    view: View?,
                    position: Int,
                    id: Long
                ) {
                    
                    fruitItem = binding?.spinnerC?.adapter?.getItem(position) as Fruit
                 

                    posOfItemSpinnerSelected = position
                    userSelected = fruitItem?.name
                    Log.e("TEST"," posOfItemSpinnerSelected: $posOfItemSpinnerSelected")
                    Toast.makeText(requireContext(), "$userSelected",Toast.LENGTH_LONG).show()
                    
                }

                override fun onNothingSelected(parent: AdapterView<*>?) {
                }
            }
        binding?.imageDropDownF?.setOnClickListener {
            binding?.spinnerC?.performClick()
        }

在适配器中。

class FSpinnerAdapter (
        context: Context,
        private val fruits: ArrayList<Fruit>,
        private val itemPosition: Int,
        ) : ArrayAdapter<Frequency>(context, 0, frequency) {

    @SuppressLint("ViewHolder")
    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
        return initializeView(convertView, position, parent)
    }

    override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
        return onCreateView(convertView, position, parent)
    }


    private fun onCreateView(convertView: View?, position: Int, parent: ViewGroup): View {
        val view = convertView
            ?: LayoutInflater.from(context).inflate(R.layout.item_spinner, parent, false)
        val textView = view.findViewById(R.id.text_name) as TextView
        val imageView = view.findViewById(R.id.image) as ImageView
        textView.text = fruits[position].name
        Log.e("TEST"," position: $itemPosition")
        return view
    }

    private fun initializeView(convertView: View?, position: Int, parent: ViewGroup): View {
        val view = convertView
                ?: LayoutInflater.from(context).inflate(R.layout.item_spinner, parent, false)
        val textView = view.findViewById(R.id.text_name) as TextView
        val imageView = view.findViewById(R.id.image) as ImageView
        textView.text = fruits[position].name
        imageView.visibility = View.GONE
        return view
    }
}

任何人都可以建议我,我在这里错过了什么。

android kotlin layout spinner
© www.soinside.com 2019 - 2024. All rights reserved.