gpt4 book ai didi

android - 预期类型与 Kotlin 中的 if 表达式不匹配

转载 作者:行者123 更新时间:2023-11-29 16:50:23 24 4
gpt4 key购买 nike

我想知道是否有人可以帮助我使用 Kotlin 解决 if 表达式中类型不匹配的问题?

我有 2 个 Activity 可以连接:第一个 Activity 是 MainActivity.kt,第二个 Activity 是 Main2Activity.kt,在第一个 Activity MainActivity 类 中,我遇到了 的问题不匹配的类型,因为我在第二个 Activity 中使用 if 语句选择要转换为 特定适配器特定图像,例如单击图像时 (a) 转换为 ADAPTER_TYPE_1 的第二个 Activity ,图像 (b) 转换为 ADAPTER_TYPE_2 的第二个 Activity

注意:图片类型是Int,我在Drawable中的第一张图片名为a,第二张图片名为b

这是一个MainActivity.kt

class MainActivity : AppCompatActivity() {

var adapter:FoodAdapter?=null
var listOfFoods =ArrayList<Food>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(layout.activity_main)


// load foods
listOfFoods.add(Food("Coffee"," Coffee preparation is", a))
listOfFoods.add(Food("Coffee"," Coffee preparation is", b))


adapter= FoodAdapter(this,listOfFoods)

gvListFood.adapter =adapter

}


class FoodAdapter: BaseAdapter {
var listOfFood= ArrayList<Food>()
var context: Context?=null
constructor(context:Context,listOfFood:ArrayList<Food>):super(){
this.context=context
this.listOfFood=listOfFood
}
override fun getView(p0: Int, foodView: View?, p2: ViewGroup?): View? {
val food = this.listOfFood[p0]
var inflator = context?.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
var foodView= inflator.inflate(layout.food_ticket, null)
foodView.ivFoodImage.setImageResource(food.image)
foodView.ivFoodImage.setOnClickListener {

val intent = Intent(context, Main2Activity::class.java)


if (foodView.ivFoodImage == a){
intent.putExtra(Main2Activity.EXTRA_ADAPTER_MODE, AdapterType.ADAPTER_TYPE_1.ordinal)
intent.putExtra("name", food.name)
intent.putExtra("des", food.des)
intent.putExtra("image", food.image)

context!!.startActivity(intent)

}
if (foodView.ivFoodImage == b) {
intent.putExtra(Main2Activity.EXTRA_ADAPTER_MODE, AdapterType.ADAPTER_TYPE_2.ordinal)
intent.putExtra("name", food.name)
intent.putExtra("des", food.des)
intent.putExtra("image", food.image)

context!!.startActivity(intent)

}





}
return foodView
}

override fun getItem(p0: Int): Any {
return listOfFood[p0]
}

override fun getItemId(p0: Int): Long {
return p0.toLong()
}

override fun getCount(): Int {

return listOfFood.size
}

}
}

error image

这是食品类

 class Food(val name: String, val des: String, val image: Int)

最佳答案

尝试以 kotlin 的方式思考,即尝试不使用可空类型。您的 Food 类也是用 java 风格编写的,但可以用更简单的风格编写:class Food(val name: String, val des: String, val image: Int)

当您经常覆盖 java 方法时,您可以删除 '?'从参数类型中删除 '!!'在未来需要非空类型的时候。var 类属性是不可取的,因为它提供了您需要注意的状态,以确保在运行时没有任何事情发生。

以上提示可能会解决您的问题。如果不是,您能否提供有关此错误的更多信息?(例如错误的行号)

关于android - 预期类型与 Kotlin 中的 if 表达式不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46639046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com