一天撸一个安卓App:记事本
2020-07-15 本文已影响0人
蓝不蓝编程
效果图
![](https://img.haomeiwen.com/i6169789/50ac6baa4fe3990a.gif)
使用到的技术
- room(谷歌官方sqlite数据库操作库)
- recyclerview
- coroutines(协程)
实现功能
- 新增/修改/删除/查看笔记
- 本地数据库记录数据.
主要代码
-
代码目录结构
- 代码节选
class NoteListActivity : AppCompatActivity() {
private var noteRepository = NoteRepository()
private lateinit var adapter: NoteAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_recycler_view)
initRecyclerView()
initAddButton()
}
private fun initAddButton() {
floatingActionButton.setOnClickListener {
startActivity(Intent(this, AddNoteActivity::class.java))
}
}
private fun initRecyclerView() {
adapter = NoteAdapter()
recyclerView.adapter = adapter
recyclerView.layoutManager = LinearLayoutManager(this)
//添加安卓自带的分割线
recyclerView.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL))
}
private fun refreshData() {
GlobalScope.launch(Dispatchers.Main) {
adapter.setData(noteRepository.getNoteList())
}
}
override fun onResume() {
super.onResume()
refreshData()
}
}
class NoteAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
private var mDataList = mutableListOf<Note>()
private lateinit var mContext: Context
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val data = mDataList[position]
holder.itemView.textView.text = data.content
holder.itemView.setOnClickListener {
setOnItemClickListener(data)
}
}
fun setData(dataList: List<Note>) {
mDataList.clear()
mDataList.addAll(dataList)
notifyDataSetChanged()
}
override fun getItemCount(): Int = mDataList.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
mContext = parent.context
val view = LayoutInflater.from(mContext).inflate(R.layout.item_rv, parent, false)
return ViewHolder(view)
}
private fun setOnItemClickListener(note: Note) {
val intent = Intent(mContext, EditNoteActivity().javaClass)
intent.putExtra(KEY_NOTE, note)
mContext.startActivity(intent)
}
class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!)
}
完整源代码
https://gitee.com/cxyzy1/notepad
安卓开发入门教程系列汇总
安卓发展历程及前景
初探安卓
开发语言学习
UI控件学习系列
UI控件_TextView
UI控件_EditText
UI控件_Button
UI控件_ImageView
UI控件_RadioButton
UI控件_CheckBox
UI控件_ProgressBar
关注头条号,第一时间获取最新文章:
![](https://img.haomeiwen.com/i6169789/c79c3a69770d3565.png)