getEventId我在类中调用了方法DataAdapter,但无法从MainActivity类中访问它,不知道为什么?
数据适配器
class DataAdapter (events: ArrayList<Array<String>>) : RecyclerView.Adapter<DataAdapter.ViewHolder>() {
private val TAG = "Adapter"
private val events = events
inner class ViewHolder (view: View) : RecyclerView.ViewHolder(view) {
var id = ""
val title: TextView = view.txtTitle
val date: TextView = view.txtDate
}
fun getEventId (position: Int): Int? {
return if (events.isNotEmpty()) events[position][0].toInt() else null
}
.....
}
Run Code Online (Sandbox Code Playgroud)
主要活动
class MainActivity : AppCompatActivity(), RecyclerItemClickListener.OnRecyclerClickListener {
private val eventsDatabase: DatabaseHelper = DatabaseHelper(this)
private var events = ArrayList<Array<String>>()
...
override fun onItemClick(view: View, position: Int) {
var itemId = DataAdapter.getEventId(position)
Toast.makeText(this, "Normal tap on id: $itemId", Toast.LENGTH_SHORT).show()
}
...
}
Run Code Online (Sandbox Code Playgroud)
您需要调用getEventId(position)类的实例而不是类本身。
class MainActivity : AppCompatActivity(), RecyclerItemClickListener.OnRecyclerClickListener {
private val eventsDatabase: DatabaseHelper = DatabaseHelper(this)
private var events = ArrayList<Array<String>>()
private var adapter = DataAdapter(arrayListOf<Array<String>>())
...
override fun onItemClick(view: View, position: Int) {
var itemId = adapter.getEventId(position)
Toast.makeText(this, "Normal tap on id: $itemId", Toast.LENGTH_SHORT).show()
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果您需要getEventId(position)在不实例化您的类的情况下进行调用(我怀疑这里可能是这种情况),您需要将其添加到您的伴生对象中。
class DataAdapter (events: ArrayList<Array<String>>) : RecyclerView.Adapter<DataAdapter.ViewHolder>() {
private val TAG = "Adapter"
private val events = events
inner class ViewHolder (view: View) : RecyclerView.ViewHolder(view) {
var id = ""
val title: TextView = view.txtTitle
val date: TextView = view.txtDate
}
companion object{
fun getEventId (position: Int): Int? {
return if (events.isNotEmpty()) events[position][0].toInt() else null
}
}
.....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |