我想使所选项目下拉项目文本颜色更改,但无法通过选择和显示图像的位置和粗体文本,适配器中的ondropdownview。
我可以在fragment的onItemSelected中获取选中的item位置。我需要在下拉菜单中显示所选项目的粗体和图像,仅显示所选位置。
我试过这种方式,但没有帮助。 在片段中。
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
}
}
任何人都可以建议我,我在这里错过了什么。