Repository
object Repository {
val bookDao:BookDao=AppDatabase.getDatabase(MyApp.context).bookDao()
//查询所有
fun loadAllBook():LiveData<List>{
return bookDao.loadAllBook()
}
//修改图书价格
fun updateBookPrice(name:String,id:Long){
bookDao.updateBookPrice(name,id)
}
//添加图书
fun insertBook(book: Book):Long{
return bookDao.insertBook(book)
}
//根据id删除
fun deleteBookById(id:Long):Int{
return bookDao.deleteBookById(id)
}
}
MainViewModel
class MainViewModel :ViewModel() {
//查询所有的book
fun getAll():LiveData<List>{
return Repository.loadAllBook()
}
}
MainActivity
这里要注意数据库操作是属于耗时的操作,Room默认是不允许放在主线程中进行数据库操作,所以我们把对数据库增删改的操作放到了子线程中。
class MainActivity : AppCompatActivity() {
private lateinit var binding:ActivityMainBinding
private val list=ArrayList()
private lateinit var adapter: BookAdapter
private val mainViewModel by lazy {
ViewModelProvider(this).get(MainViewModel::class.java)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding= ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
//初始化适配器
adapter=BookAdapter(R.layout.item_book,l