如何解决未经检查的演员表:List<SiteData?>?到 List<SiteData.DataClass>
基本上我必须从 api "https://api.ipma.pt/open-data/distrits-islands.json" 获取数据并在微调器上显示城市,为此我使用 moshi 获取数据和一个微调适配器。有人可以帮我解决“未经检查的演员表:列出
这是主活动
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val botao: Button=findViewById(R.id.couf)
botao.setOnClickListener{ changeCF() }
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
val retrofit = Retrofit.Builder()
.baseUrl( AppApiService.BASE_URL)
.addConverterFactory(MoshiConverterFactory.create(moshi))
.build()
val API = retrofit.create(AppApiService::class.java)
val call = API.posts
call?.enqueue(object : Callback<List<SiteData?>?>{
override fun onResponse(
call: Call<List<SiteData?>?>,response: Response<List<SiteData?>?>
) {
var postList : List<SiteData.DataClass>?= response.body() as List<SiteData.DataClass>
var spinner: Spinner= findViewById(R.id.spinner)
spinner.adapter=SpinnerAdapter(this@MainActivity,postList!!)
}
override fun onFailure(call: Call<List<SiteData?>?>,t: Throwable) {
TODO("Not yet implemented")
}
})
}
@Override
private fun changeCF(){
Toast.makeText(this,"Unidade Convertida",Toast.LENGTH_SHORT).show()
val txt: TextView = findViewById(R.id.temp)
val texto = txt.text.toString()
if(texto == "13.5ºC") {
txt.setText("56.3ºF")
} else
txt.setText("13.5ºC")
}}
这是我的数据类
class SiteData (var owner: String,var country:String,var data: List<DataClass>
){
data class DataClass(
var local: String,var longitude: Double)}
这是我的 Spinner 适配器
class SpinnerAdapter internal constructor(internal var context: Context,internal var list: List<SiteData.DataClass>) : BaseAdapter() {
override fun getCount(): Int {
return list.size
}
override fun getItem(position: Int): Any? {
return null
}
override fun getItemId(position: Int): Long {
return 0
}
override fun getView(i: Int,view: View?,viewGroup: ViewGroup?): View {
var view = view
if (view == null) {
val inflater = LayoutInflater.from(context)
view = inflater.inflate(R.layout.item,viewGroup,false)
}
val textView = view!!.findViewById<TextView>(R.id.textView)
textView.text = list[i].local
return textView
}}
这是我的api服务
interface AppApiService {
companion object {
const val BASE_URL = "https://api.ipma.pt/"}
@get:GET("open-data/distrits-islands")
val posts : Call<List<SiteData?>?>?}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。