如何使一个数据类变量成为可选的?(Android Studio - Kotlin)

问题描述 投票:0回答:1

当我在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)

}
android variables kotlin android-recyclerview android-toast
1个回答
0
投票

你可以这样做。

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
)

这样一来,所有的变量都是可选的。


0
投票

你可以为构造函数参数提供一个默认值。

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")
    }
}

编码快乐!

© www.soinside.com 2019 - 2024. All rights reserved.