效果图

使用到的技术

  • room(谷歌官方sqlite数据库操作库)
  • recyclerview
  • coroutines(协程)

实现功能

  1. 新增/修改/删除/查看笔记
  2. 本地数据库记录数据.

主要代码

  1. 代码目录结构
  2. 代码节选
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

安卓开发入门教程系列汇总

安卓发展历程及前景

安卓发展历程
安卓开发前景展望

初探安卓

安装开发工具
创建第一个安卓工程

开发语言学习

Kotlin语言基础

UI控件学习系列

UI控件_TextView
UI控件_EditText
UI控件_Button
UI控件_ImageView
UI控件_RadioButton
UI控件_CheckBox
UI控件_ProgressBar

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐