Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将自定义微调器库从Java转换为与Kotlin一起使用。听众的问题_Android_Xml_Gradle_Kotlin_Android Spinner - Fatal编程技术网

Android 将自定义微调器库从Java转换为与Kotlin一起使用。听众的问题

Android 将自定义微调器库从Java转换为与Kotlin一起使用。听众的问题,android,xml,gradle,kotlin,android-spinner,Android,Xml,Gradle,Kotlin,Android Spinner,我正在开发一个小型Android应用程序。该应用程序使用了两个微调器。我希望能够使用微调器,但我希望微调器中的第一个选项是提示,而不是可选的 我在StackOverflow上找到了很多解决方法。但不完全是我要找的 我在Github上发现了以下回购协议: 这正是我想要做的。但是,它是用Java编写的,而我的应用程序是用Kotlin编写的。我知道他们应该一起工作,但我没法让这件事起作用。我敢肯定,问题出在我的经验不足,而不是回购协议或Kotlin诉。Java的东西 这是我的纺纱机。它存在于onVie

我正在开发一个小型Android应用程序。该应用程序使用了两个微调器。我希望能够使用微调器,但我希望微调器中的第一个选项是提示,而不是可选的

我在StackOverflow上找到了很多解决方法。但不完全是我要找的

我在Github上发现了以下回购协议:

这正是我想要做的。但是,它是用Java编写的,而我的应用程序是用Kotlin编写的。我知道他们应该一起工作,但我没法让这件事起作用。我敢肯定,问题出在我的经验不足,而不是回购协议或Kotlin诉。Java的东西

这是我的纺纱机。它存在于onViewCreated()中的一个片段中

在Kotlin的应用程序中,我正在做:

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()
    }