這是一個簡單的待辦事項串列應用程式的主要活動,如果您想查看更多代碼,請告訴我
當 private lateinit var todoAdapter: TodoAdapter 被洗掉時,應用不再崩潰,但應用將不再在回收站視圖上顯示待辦事項
"package com.example.todoit
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.TextUtils
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.todoit.data.Todo
import com.example.todoit.data.TodoViewModel
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private lateinit var todoAdapter: TodoAdapter
private lateinit var todoViewModel: TodoViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
rvTodoItems.layoutManager = LinearLayoutManager(this)
rvTodoItems.adapter = todoAdapter
btnAddTodo.setOnClickListener {
val todoTitle = etTodoTitle.text.toString()
if (todoTitle.isNotEmpty()) {
val todo = Todo(0,todoTitle,false)
etTodoTitle.text.clear()
insertDataToDataBase()
todoAdapter.addTodo(todo)
}
}
btnDeleteTodo.setOnClickListener {
todoAdapter.deleteDoneTodos()
}
}
private fun insertDataToDataBase() {
val todoTitle = etTodoTitle.text.toString()
if(inputCheck(todoTitle)) {
val todo = Todo(0, todoTitle, isChecked = false)
//Add data to database
todoViewModel.addTodoToDataBase(todo)
Toast.makeText(this, "Successfully Added", Toast.LENGTH_LONG).show()
}else{
Toast.makeText(this, "Please fill out all fields", Toast.LENGTH_LONG).show()
}
}
private fun inputCheck(todoTitle:String):Boolean {
return !(TextUtils.isEmpty(todoTitle))
}
}
uj5u.com熱心網友回復:
你忘了初始化你的 todoAdapter,你需要在呼叫它之前初始化 todoAdapter。
class MainActivity : AppCompatActivity() {
private lateinit var todoAdapter: TodoAdapter
private lateinit var todoViewModel: TodoViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
todoAdapter = TodoAdapter() // if TodoAdapter requires parameters you need to pass them
rvTodoItems.layoutManager = LinearLayoutManager(this)
rvTodoItems.adapter = todoAdapter
btnAddTodo.setOnClickListener {
val todoTitle = etTodoTitle.text.toString()
if (todoTitle.isNotEmpty()) {
val todo = Todo(0,todoTitle,false)
etTodoTitle.text.clear()
insertDataToDataBase()
todoAdapter.addTodo(todo)
}
}
btnDeleteTodo.setOnClickListener {
todoAdapter.deleteDoneTodos()
}
}
private fun insertDataToDataBase() {
val todoTitle = etTodoTitle.text.toString()
if(inputCheck(todoTitle)) {
val todo = Todo(0, todoTitle, isChecked = false)
//Add data to database
todoViewModel.addTodoToDataBase(todo)
Toast.makeText(this, "Successfully Added", Toast.LENGTH_LONG).show()
}else{
Toast.makeText(this, "Please fill out all fields", Toast.LENGTH_LONG).show()
}
}
private fun inputCheck(todoTitle:String):Boolean {
return !(TextUtils.isEmpty(todoTitle))
}
}
uj5u.com熱心網友回復:
該錯誤清除了您的 todoAdapter 未初始化,您必須在使用之前進行初始化,如下所示:
todoAdapter=TodoAdapter(yourprams)
rvTodoItems.layoutManager = LinearLayoutManager(this)
rvTodoItems.adapter = todoAdapter
btnAddTodo.setOnClickListener {
val todoTitle = etTodoTitle.text.toString()
if (todoTitle.isNotEmpty()) {
val todo = Todo(0,todoTitle,false)
etTodoTitle.text.clear()
insertDataToDataBase()
todoAdapter.addTodo(todo)
}
}
btnDeleteTodo.setOnClickListener {
todoAdapter.deleteDoneTodos()
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/493036.html
