Android studio Studio在尝试从回收器视图适配器启动Tactivity()时显示错误
构建我的第一个应用程序时遇到了一个我无法理解的错误。我有一个显示卡片列表的回收器视图。我想单击该卡并打开另一个活动 这是我的密码:Android studio Studio在尝试从回收器视图适配器启动Tactivity()时显示错误,android-studio,android-activity,android-recyclerview,kotlin,Android Studio,Android Activity,Android Recyclerview,Kotlin,构建我的第一个应用程序时遇到了一个我无法理解的错误。我有一个显示卡片列表的回收器视图。我想单击该卡并打开另一个活动 这是我的密码: import android.content.Context import android.content.Intent import android.support.v4.content.ContextCompat.startActivity import android.support.v7.widget.RecyclerView import android.
import android.content.Context
import android.content.Intent
import android.support.v4.content.ContextCompat.startActivity
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import kotlinx.android.synthetic.main.list_tank_item.view.*
class TankAdapter(val context: Context, val tanks: List<Tank>) : RecyclerView.Adapter<TankAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.list_tank_item, parent, false)
return ViewHolder(view)
}
override fun getItemCount(): Int {
return tanks.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val tank = tanks[position]
holder.setData(tank, position)
}
inner class ViewHolder(itemview: View) : RecyclerView.ViewHolder(itemview) {
var currentTank: Tank? = null
var currentPosition: Int = 0
init {
itemView.setOnClickListener{
val intent = Intent(context, TankOverviewActivity::class.java)
var tank_id = currentTank._id.toString()
intent.putExtra("tank_id", tank_id)
startActivity(intent)
}
itemView.imgEdit.setOnClickListener{
Toast.makeText(context, currentTank!!.tank_name + " Edit button clicked!", Toast.LENGTH_LONG).show()
}
}
fun setData(tank: Tank?, position: Int) {
itemView.txvTankName.text = tank!!.tank_name
itemView.txvTankCapacity.text = tank!!.tank_capacity
itemView.txvTankType.text = tank!!.tank_type
this.currentTank = tank
this.currentPosition = position
}
}
}
导入android.content.Context
导入android.content.Intent
导入android.support.v4.content.ContextCompat.startActivity
导入android.support.v7.widget.RecyclerView
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入android.widget.Toast
导入kotlinx.android.synthetic.main.list\u tank\u item.view*
类TankAdapter(val-context:context,val-tanks:List):RecyclerView.Adapter(){
override onCreateViewHolder(父级:ViewGroup,p1:Int):ViewHolder{
val view=LAYOUTINGFLATER.from(上下文)。充气(R.layout.list\U tank\U项目,父项,false)
返回视图保持器(视图)
}
重写getItemCount():Int{
回流罐.尺寸
}
覆盖BindViewHolder(holder:ViewHolder,位置:Int){
val油箱=油箱[位置]
支架设置数据(油箱、位置)
}
内部类ViewHolder(itemview:View):RecyclerView.ViewHolder(itemview){
var currentTank:油箱?=空
var currentPosition:Int=0
初始化{
itemView.setOnClickListener{
val intent=intent(上下文,TankOverviewActivity::class.java)
var tank_id=currentTank._id.toString()
意向。额外(“储罐id”,储罐id)
星触觉(意图)
}
itemView.imgEdit.setOnClickListener{
Toast.makeText(上下文,currentTank!!.tank\u name+“单击编辑按钮!”,Toast.LENGTH\u LONG.show()
}
}
fun设置数据(油箱:油箱?,位置:Int){
itemView.txvTankName.text=tank!!.tank\u name
itemView.txvTankCapacity.text=油箱!!.tank\u容量
itemView.txvTankType.text=油箱!!.tank\U类型
此.currentTank=油箱
this.currentPosition=位置
}
}
}
这里是android studio的屏幕:
我做错了什么?试试下面的方法
import ...
//use your context as member of your class put private as modifier
class TankAdapter(private val context: Context, val tanks: List<Tank>) : RecyclerView.Adapter<TankAdapter.ViewHolder>() {
...
inner class ViewHolder(itemview: View) : RecyclerView.ViewHolder(itemview) {
...
init {
itemView.setOnClickListener {
...
//call startActivity from context
context.startActivity(intent)
}
...
}
...
}
}
导入。。。
//使用上下文作为类的成员,将private作为修饰符
类TankAdapter(私有val上下文:context,val tanks:List):RecyclerView.Adapter(){
...
内部类ViewHolder(itemview:View):RecyclerView.ViewHolder(itemview){
...
初始化{
itemView.setOnClickListener{
...
//从上下文调用startActivity
上下文。起始触觉(意图)
}
...
}
...
}
}
似乎AndroidStudio强调了意图
是导致错误的原因,解决了错误,但我仍然无法构建应用程序:(构建时出现java错误:不客气!;-)将其作为正确答案,然后创建另一个问题。我们再去帮你