当我在recycleview中点击一个项目(课程名称)时,它会带我到一个新的活动。然而,我现在只需要2个课程就可以了。对于其余的项目,我不想添加任何目标活动。取而代之的是,我只想添加一个例如 "该功能尚未可用 "的吐司消息。我如何做这些事情?
数据类。
data class CourseList(
val courseTitle: String,
val courseType: String,
val courseLength: String,
val target: Class<out Activity>
)
CourseListActivityHE:
CourseListActivityHe : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.course_list)
val course = listOf(
CourseList("BSc (Hons) Networking", "Type: Full/Part Time", "Length: 3/6 Years", CourseViewActivityHe1::class.java),
CourseList("BSc (Hons) Software Engineering", "Type: Full/Part Time", "Length: 3/6 Years", CourseListActivityHe::class.java),
CourseList("BSc (Hons) Civil Engineering PM", "Type: Full/Part Time", "Length: 3/6 Years", CourseListActivityHe::class.java),
CourseList("Level 4 Electrical Engineering", "Type: Full/Part Time", "Length: 1/2 Years", CourseListActivityHe::class.java),
CourseList("Level 4 Mechanical Engineering", "Type: Full/Part Time", "Length: 1/2 Years", CourseListActivityHe::class.java),
CourseList("Level 5 Electrical Engineering", "Type: Full/Part Time", "Length: 2/4 Years", CourseListActivityHe::class.java),
CourseList("Level 5 Mechanical Engineering", "Type: Full/Part Time", "Length: 2/4 Years", CourseListActivityHe::class.java),
CourseList("BSc (Hons) Ophthalmic Dispensing", "Type: Full/Part Time", "Length: 3/6 Years", CourseListActivityHe::class.java),
CourseList("FdSc Ophthalmic Dispensing", "Type: Full/Part Time", "Length: 2/4 Years", CourseListActivityHe::class.java)
)
list_of_course.apply {
layoutManager = LinearLayoutManager(this@CourseListActivityHe)
adapter = CourseListAdapter(course){
startActivity(Intent(this@CourseListActivityHe, it.target))
}
}
CourseListAdapter(如果需要)。
class CourseListAdapter( val course: List<CourseList>, val courseClicked: (CourseList) -> Unit):
RecyclerView.Adapter<CourseListAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val layoutView = LayoutInflater.from(parent.context).inflate(R.layout.course_list_activity, parent, false)
return ViewHolder(layoutView)
}
override fun getItemCount() = course.size
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val cours = course[position]
with(holder.view) {
setOnClickListener{
(courseClicked)(cours)
}
}
holder.view.courseTitle.text = "${cours.courseTitle}"
holder.view.courseType.text = "${cours.courseType}"
holder.view.courseLength.text = "${cours.courseLength}"
}
class ViewHolder(val view: View) : RecyclerView.ViewHolder(view)
}
你可以这样做。
data class CourseList(
val courseTitle: String = "",
val courseType: String = "Type: Full/Part Time",
val courseLength: String = "",
val target: Class<out Activity> = CourseListActivityHe::class.java
)
or
so only 2 courseTitle and courseLength is required
data class CourseList(
val courseTitle: String,
val courseType: String = "Type: Full/Part Time",
val courseLength: String,
val target: Class<out Activity> = CourseListActivityHe::class.java
)
这样一来,所有的变量都是可选的。
你可以为构造函数参数提供一个默认值。
data class CourseList(
val courseTitle: String = "",
val courseType: String = "",
val courseLength: String,
val target: Class<out Activity>
)
更好的例子。
fun main(args: Array<String>) {
println("person1 is instantiated")
val person1 = Person("joe", 25)
println("person2 is instantiated")
val person2 = Person("Jack")
println("person3 is instantiated")
val person3 = Person()
}
class Person(_firstName: String = "UNKNOWN", _age: Int = 0) {
val firstName = _firstName.capitalize()
var age = _age
// initializer block
init {
println("First Name = $firstName")
println("Age = $age\n")
}
}
编码快乐!