Я новичок в Kotlin и пытаюсь получить доступ к определенному полю в общем классе
Я испробовал всевозможные потенциальные решения - у меня проблема в том, что я не знаю, как сообщить Kotlin, что имя поля в классе, который я передаю, существует.
Это мой класс: -
@Entity(tableName = "coursemark_table")
@Parcelize
class CourseMark(
@field:PrimaryKey
@field:ColumnInfo(name = "coursemark_number")
var number: Int,
var name: String,
var latitude: String,
var longitude: String,
var passTo: String
): Parcelable
Это класс адаптера общего списка, который я пытаюсь инициализировать - я не могу понять, как получить поле имени в CourseMark в функции OnBindViewHolder, я могу понять, почему, поскольку BaseListHolder не знает имен полей в CourseMark, пока он не будет инициализирован, но должен быть способ сообщить компилятору Kotlin, что это поле существует - мои извинения за публикацию этого сообщения, но я несколько дней пытался выяснить это: -
abstract class BaseListAdapter<T> internal constructor(context: Context) :
RecyclerView.Adapter<BaseListAdapter<T>.BaseViewHolder>() {
private val mInflater: LayoutInflater = LayoutInflater.from(context)
private var mMarks = emptyList<T>() // Cached copy of marks
inner class BaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val markItemView: TextView = itemView.findViewById(R.id.textView)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val itemView = mInflater.inflate(R.layout.recyclerview_coursemark, parent, false)
return BaseViewHolder(itemView)
}
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
val current = mMarks[position]
holder.markItemView.text = current.name
}
/**
* Associate a list of marks with this adapter
*/
internal fun setMarks(marks: List<T>) {
mMarks = marks
notifyDataSetChanged()
}
// getItemCount() is called many times, and when it is first called,
// mMarks has not been updated (means initially, it's null, and we can't return null).
override fun getItemCount(): Int {
return mMarks.size
}
/**
* Get the mark at a given position.
* This method is useful for identifying which mark
* was clicked or swiped in methods that handle user events.
*
* @param position
* @return The mark at the given position
*/
fun getMarkAtPosition(position: Int): T {
return mMarks[position]
}
}