美文网首页安卓开发
一天撸一个安卓App:记事本

一天撸一个安卓App:记事本

作者: 蓝不蓝编程 | 来源:发表于2020-07-15 10:26 被阅读0次

    效果图

    使用到的技术

    • 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

    关注头条号,第一时间获取最新文章:


    相关文章

      网友评论

        本文标题:一天撸一个安卓App:记事本

        本文链接:https://www.haomeiwen.com/subject/hgcdhktx.html