Android 将自定义微调器库从Java转换为与Kotlin一起使用。听众的问题
我正在开发一个小型Android应用程序。该应用程序使用了两个微调器。我希望能够使用微调器,但我希望微调器中的第一个选项是提示,而不是可选的 我在StackOverflow上找到了很多解决方法。但不完全是我要找的 我在Github上发现了以下回购协议: 这正是我想要做的。但是,它是用Java编写的,而我的应用程序是用Kotlin编写的。我知道他们应该一起工作,但我没法让这件事起作用。我敢肯定,问题出在我的经验不足,而不是回购协议或Kotlin诉。Java的东西 这是我的纺纱机。它存在于onViewCreated()中的一个片段中 在Kotlin的应用程序中,我正在做:Android 将自定义微调器库从Java转换为与Kotlin一起使用。听众的问题,android,xml,gradle,kotlin,android-spinner,Android,Xml,Gradle,Kotlin,Android Spinner,我正在开发一个小型Android应用程序。该应用程序使用了两个微调器。我希望能够使用微调器,但我希望微调器中的第一个选项是提示,而不是可选的 我在StackOverflow上找到了很多解决方法。但不完全是我要找的 我在Github上发现了以下回购协议: 这正是我想要做的。但是,它是用Java编写的,而我的应用程序是用Kotlin编写的。我知道他们应该一起工作,但我没法让这件事起作用。我敢肯定,问题出在我的经验不足,而不是回购协议或Kotlin诉。Java的东西 这是我的纺纱机。它存在于onVie
var nameSpinner: AwesomeSpinner = binding.spinnerCustomerName as AwesomeSpinner
这就是我的麻烦开始的地方。我不知道如何正确设置适配器和侦听器。我已经尝试了我能想到的每一种方法,但是我错过了什么或者做错了什么
正在处理此问题,我无法正确获取适配器
companyNamesAdapter.setAdapter(nameSpinner, 0)
以上是不正确的.setAdapter
仍然是可解析的资源`
这是正确的工作代码:
//String array
var nameSpinner: AwesomeSpinner = binding.spinnerCustomerName
//Adapter for spinner
var companyNamesAdapter = ArrayAdapter.createFromResource(activity,
R.array.companyname_array, android.R.layout.simple_spinner_dropdown_item)
nameSpinner.setAdapter(companyNamesAdapter, 0)
//item selected listener for spinner
nameSpinner.setOnSpinnerItemClickListener(
object:AwesomeSpinner.onSpinnerItemClickListener<String>() {
nameSpinner.setOnSpinnerItemClickListener { position: Int, itemAtPosition ->
selectedCompanyName = nameSpinner.selectedItem[position].toString()
Log.v(LOG_TAG, "Spinner Item Selected --> $companyNamesAdapter and $itemAtPosition" )
}
//字符串数组
var nameSpinner:AwesomeSpinner=binding.spinnerCustomerName
//纺纱机转接器
var companyNamesAdapter=ArrayAdapter.createFromResource(活动,
R.array.companyname\u数组,android.R.layout.simple\u微调器\u下拉菜单\u项)
nameSpinner.setAdapter(companyNamesAdapter,0)
//为微调器选择的项目侦听器
nameSpinner.setOnSpinnerItemClickListener(
对象:AwesomeSpinner.onSpinnerItemClickListener(){
nameSpinner.setOnSpinnerItemClickListener{position:Int,itemAtPosition->
selectedCompanyName=nameSpinner.selectedItem[position].toString()
Log.v(Log_标记,“选择的微调器项-->$companyNamesAdapter和$itemAtPosition”)
}
我的XML已经设置好,看起来还可以。正如
Gradle
中的依赖项和存储库一样,刚刚从他们的手册中复制了代码,并且在Kotlin中工作正常:
val spinner = findViewById<AwesomeSpinner>(R.id.spinner)
val categories = listOf("Automobile", "Ariplane")
val categoriesAdapter = ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories)
spinner.setAdapter(categoriesAdapter)
spinner.setOnSpinnerItemClickListener { position, itemAtPosition ->
Toast.makeText(this, "Selected on $position with $itemAtPosition", Toast.LENGTH_SHORT).show()
}
val微调器=findViewById(R.id.spinner)
val类别=列表(“汽车”、“飞机”)
val categoriesAdapter=ArrayAdapter(这是android.R.layout.simple\u微调器\u项目,类别)
spinner.setAdapter(类别适配器)
spinner.setOnSpinnerItemClickListener{position,itemAtPosition->
Toast.makeText(这是“在$position上选择$itemAtPosition”,Toast.LENGTH\u SHORT.show())
}
这有帮助还是我想你的问题
UPD.看起来您混淆了适配器和微调器:
companyNamesAdapter.setAdapter(nameSpinner,0)
。它应该是nameSpinner.setAdapter(companyNamesAdapter,0)
从未来的角度来看,如果您不知道如何使用kotlin编写,只需使用java编写所有这些内容,然后将该文件转换为kotlinI即可。不仅在这个问题上,而且在其他问题上,我都尝试过。我从未在转换方面取得过很多成功。看起来您将适配器和微调器混淆了:companyNamesAdapter.setAdapter(nameSpinner,0)
。它应该是nameSpinner.setAdapter(companyNamesAdapter,0)
嗯……我想我必须删除这个帐户,然后羞愧地走开。:)我简直不敢相信。我已经认真地在这上面敲了两天了!两天了!谢谢,好眼力。你在上面的评论中发现了错误。不确定将此标记为解决它是否正确。想编辑此以指出你发现了什么吗?
//String array
var nameSpinner: AwesomeSpinner = binding.spinnerCustomerName
//Adapter for spinner
var companyNamesAdapter = ArrayAdapter.createFromResource(activity,
R.array.companyname_array, android.R.layout.simple_spinner_dropdown_item)
nameSpinner.setAdapter(companyNamesAdapter, 0)
//item selected listener for spinner
nameSpinner.setOnSpinnerItemClickListener(
object:AwesomeSpinner.onSpinnerItemClickListener<String>() {
nameSpinner.setOnSpinnerItemClickListener { position: Int, itemAtPosition ->
selectedCompanyName = nameSpinner.selectedItem[position].toString()
Log.v(LOG_TAG, "Spinner Item Selected --> $companyNamesAdapter and $itemAtPosition" )
}
val spinner = findViewById<AwesomeSpinner>(R.id.spinner)
val categories = listOf("Automobile", "Ariplane")
val categoriesAdapter = ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories)
spinner.setAdapter(categoriesAdapter)
spinner.setOnSpinnerItemClickListener { position, itemAtPosition ->
Toast.makeText(this, "Selected on $position with $itemAtPosition", Toast.LENGTH_SHORT).show()
}