Reputation: 2225
I have method called getEventId
in the DataAdapter
class but I'm unable to access it from my MainActivity
class and not sure why?
DataAdapter
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
}
.....
}
MainActivity
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()
}
...
}
Upvotes: 2
Views: 1554
Reputation: 2212
You need to call getEventId(position)
on an instance of the class not on the class itself.
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()
}
...
}
If you need to call getEventId(position)
without instantiating your class (which I doubt might be the case here), you need to add it in your companion object.
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
}
}
.....
}
Upvotes: 5