使用kotlin语言(2)界面设计: ① 创建一个MainActivity,对应的布局为activity_main。 ② 添加一个RecyclerView,用于显示所有的图书条目信息,每个条目显示书的名字、作者、类别和价格。 ③ 添加一个“添加书目”的按钮,用于跳转进入AddBookActivity。 ④ 在AddBookActivity中,可以添加一本书的信息到数据库中。提示:AddBookActivity需要的组件包括:EditText、TextView、Button。
时间: 2024-03-09 16:46:22 浏览: 102
使用ViewModel解决多个Activity数据共享问题(Kotlin版)
好的,这是一个关于Kotlin语言的Android应用程序设计问题。根据你的要求,我可以为你提供一些代码示例:
1. 在MainActivity中,你可以这样来添加RecyclerView:
```kotlin
class MainActivity : AppCompatActivity() {
private lateinit var recyclerView: RecyclerView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
recyclerView = findViewById(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.adapter = BookAdapter(this)
val addButton: Button = findViewById(R.id.addButton)
addButton.setOnClickListener {
startActivity(Intent(this, AddBookActivity::class.java))
}
}
}
```
2. 在AddBookActivity中,你可以这样来添加一本书的信息到数据库中:
```kotlin
class AddBookActivity : AppCompatActivity() {
private lateinit var bookDao: BookDao
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add_book)
val db = AppDatabase.getInstance(this)
bookDao = db.bookDao()
val saveButton: Button = findViewById(R.id.saveButton)
saveButton.setOnClickListener {
val name = findViewById<EditText>(R.id.nameEditText).text.toString()
val author = findViewById<EditText>(R.id.authorEditText).text.toString()
val category = findViewById<EditText>(R.id.categoryEditText).text.toString()
val price = findViewById<EditText>(R.id.priceEditText).text.toString().toDouble()
val book = Book(name, author, category, price)
bookDao.insert(book)
finish()
}
}
}
```
3. 最后,你需要创建一个BookAdapter类来显示所有的图书条目信息:
```kotlin
class BookAdapter(private val context: Context) : RecyclerView.Adapter<BookAdapter.ViewHolder>() {
private val bookDao = AppDatabase.getInstance(context).bookDao()
private val books = bookDao.getAll()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.book_item, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val book = books[position]
holder.nameTextView.text = book.name
holder.authorTextView.text = book.author
holder.categoryTextView.text = book.category
holder.priceTextView.text = "¥${book.price}"
}
override fun getItemCount() = books.size
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val nameTextView: TextView = itemView.findViewById(R.id.nameTextView)
val authorTextView: TextView = itemView.findViewById(R.id.authorTextView)
val categoryTextView: TextView = itemView.findViewById(R.id.categoryTextView)
val priceTextView: TextView = itemView.findViewById(R.id.priceTextView)
}
}
```
希望这些代码示例可以帮助你完成你的应用程序设计。如果你有任何问题或需要更多的帮助,请告诉我。
阅读全文