国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android 備忘錄,記事本程序設(shè)計

這篇具有很好參考價值的文章主要介紹了Android 備忘錄,記事本程序設(shè)計。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

android備忘錄實現(xiàn),使用ObjectBox數(shù)據(jù)庫框架進行數(shù)據(jù)存儲,增刪改查等操作。代碼使用kotlin編寫。

1、下面看看ObjectBox數(shù)據(jù)庫封裝

需要注意的是:

? ?/**
? ? ?* 你只有配置好之后, 點擊 Make Model '你的model名字', 才會創(chuàng)建 MyObjectBox對象
? ? ?* 對于MyObjectBox的包名, 目前我發(fā)現(xiàn)的是找到第一個Entity的包名
? ? ?* 如果項目使用了Kotlin, 必須添加插件apply plugin: 'kotlin-kapt'
? ? ?* 實體Entity是不能繼承的哦.繼承的字段不會被解析
? ? ?*/

package com.mmsx.note.app

import android.content.Context
import android.util.Log
import com.elvishew.xlog.XLog
import com.mmsx.note.entity.MyObjectBox
import com.mmsx.note.entity.NoteEntity
import com.mmsx.note.entity.NoteEntity_
import io.objectbox.Box
import io.objectbox.BoxStore
import io.objectbox.android.AndroidObjectBrowser
import io.objectbox.android.BuildConfig

object ObjectBox {
    lateinit var boxStore: BoxStore
        private set

    /**
     * 你只有配置好之后, 點擊 Make Model '你的model名字', 才會創(chuàng)建 MyObjectBox對象
     * 對于MyObjectBox的包名, 目前我發(fā)現(xiàn)的是找到第一個Entity的包名
     * 如果項目使用了Kotlin, 必須添加插件apply plugin: 'kotlin-kapt'
     * 實體Entity是不能繼承的哦.繼承的字段不會被解析
     */
    fun init() : BoxStore{
        boxStore = MyObjectBox.builder()
            .androidContext(NoteApplication.instance.applicationContext)
            .build()
        if (BuildConfig.DEBUG) {
            val started = AndroidObjectBrowser(boxStore).start(NoteApplication.instance)
            XLog.d("ObjectBrowser", "Started: $started")
        }
        return boxStore
    }


    /**
     * 重啟數(shù)據(jù)庫
     * 刪除本地數(shù)據(jù)庫后,需要重新創(chuàng)建
     */
    fun  restartBoxStore(){
        boxStore = MyObjectBox.builder().androidContext(NoteApplication.instance).build()
    }

    /**
     * 添加數(shù)據(jù)
     */
    fun  addData(o: NoteEntity): Long {
        try {
            if (boxStore != null && !boxStore.isClosed) {
                boxStore.boxFor(NoteEntity::class.java).put(o)
            }
        } catch (e: Throwable) {
            Log.d("lyy", "error:${e.printStackTrace()}")
        }
        return 0
    }

    /**
     * 更新數(shù)據(jù)(如果直接插入更新的對象,有些字段沒有值會覆蓋掉)
     * 1、先查詢到數(shù)據(jù)
     * 2、對查詢到的數(shù)據(jù)字段進行更新
     * 3、查詢不到,直接插入
     */
    fun updateData(o: NoteEntity) {
        try {
            if (boxStore != null && !boxStore.isClosed) {
                //1、先查詢到數(shù)據(jù)
                val box: Box<NoteEntity> = boxStore.boxFor(NoteEntity::class.java)
                val list: MutableList<NoteEntity> = box.query().equal(NoteEntity_.id, o.id).build().find()
                var localBean = list.getOrNull(0)
                //2、對查詢到的數(shù)據(jù)字段進行更新
                localBean?.let {
                    localBean.title = o.title
                    localBean.content = o.content
                    localBean.updatedAt = o.updatedAt
                    boxStore.boxFor(NoteEntity::class.java).put(localBean)
                }?: kotlin.run {
                    //3、查詢不到,直接插入
                    ObjectBox.boxStore.boxFor(NoteEntity::class.java).put(o)
                }
            }
        } catch (e: Throwable) {
            Log.d("lyy", "error:${e.printStackTrace()}")
        }

    }


    /**
     * 獲取全部對象數(shù)據(jù)
     */
    fun  getNoteEntityAllData(): MutableList<NoteEntity>? {
        try {
            if (boxStore != null && !boxStore.isClosed) {
                val box: Box<NoteEntity> = boxStore.boxFor(NoteEntity::class.java)
                return box.all
            }
        } catch (e: java.lang.Exception) {
        }
        return ArrayList()
    }

    /**
     * 條件查詢
     */
    fun getNoteEntityData(title : String): List<NoteEntity>? {
        try {
            if (boxStore != null && !boxStore.isClosed) {
                val box: Box<NoteEntity> = boxStore.boxFor(NoteEntity::class.java)
                return box.query().equal(NoteEntity_.title, title).build().find()
            }
        } catch (e: java.lang.Exception) {
        }
        return ArrayList<NoteEntity>()
    }

    /**
     * 查詢單個數(shù)據(jù)
     */
    fun getNoteEntity(id: Long): NoteEntity? {
        try {
            if (boxStore != null && !boxStore.isClosed) {
                val box: Box<NoteEntity> = boxStore.boxFor(NoteEntity::class.java)
                return box[id]
            }
        } catch (e: java.lang.Exception) {
        }
        return null
    }

    /**
     * 刪除數(shù)據(jù)單個數(shù)據(jù)1
     */
    fun deleteNoteEntityData(id: Long): Boolean {
        try {
            if (boxStore != null && !boxStore.isClosed) {
                val box: Box<NoteEntity> = boxStore.boxFor(NoteEntity::class.java)
                return box.remove(id)
            }
        } catch (e: java.lang.Exception) {
        }
        return false
    }


    /**
     * 刪除數(shù)據(jù)單個數(shù)據(jù)2
     */
    fun <Any> deleteData(o: Any, clazz: Class<Any>?) {
        try {
            if (boxStore != null && !boxStore.isClosed) {
                val box: Box<Any> = boxStore.boxFor<Any>(clazz)
                box.remove(o)
            }
        } catch (e: java.lang.Exception) {
        }
    }

    
}


2、主頁面數(shù)據(jù)展示代碼

使用kotlin代碼編寫,加上其他框架就是簡潔啊

class MainActivity : ScopedAppActivity(){
    private var adapter : NoteAdapter ? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)

        initView()
    }

    private fun initView() {
        adapter = NoteAdapter()
        main_note_recycler_view.layoutManager = LinearLayoutManager(this)
        main_note_recycler_view.adapter = adapter

        adapter?.setOnItemChildClickListener { adapter, view, position ->
            var intent = Intent(this, ShowNoteActivity::class.java).apply {
                putExtra("entity", adapter?.data?.get(position) as NoteEntity)
            }
            startActivity(intent)
        }
        main_add_view.setOnClickListener {
            startActivity(Intent(this, NoteActivity::class.java))
        }
        main_menu_view.setOnClickListener {
            startActivity(Intent(this, SettingActivity::class.java))
        }

    }

    override fun onResume() {
        super.onResume()
        val data = getNoteEntityAllData()
        adapter?.setNewData(data)
        if (data?.size == 0) {
            main_empty_view.visibility = View.VISIBLE
        }else{
            main_empty_view.visibility = View.GONE
        }
    }

    class NoteAdapter  : BaseQuickAdapter<NoteEntity, BaseViewHolder>(R.layout.item_main_note) {
        override fun convert(helper: BaseViewHolder, item: NoteEntity?) {
            helper.setText(R.id.item_main_note_title_view, item?.title)
                .setText(R.id.item_main_note_content_view, item?.content)
                .setText(R.id.item_main_time_content_view, TimeUtils.date2String(item?.createdAt?.let {
                    Date(
                        it
                    )
                },"yyyy/MM/dd HH:mm"))
                .addOnClickListener(R.id.item_main_note)

        }

    }
}

2、數(shù)據(jù)添加和更新頁面

class NoteActivity : ScopedAppActivity(){
    private var entity : NoteEntity ?= null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_note)

        entity = this.intent.extras?.getSerializable("entity") as NoteEntity?
        initView()
    }

    private fun initView() {
        if (entity != null) {
            note_title_view.text = "編輯"
            note_title_edit_view?.setText(entity?.title)
            note_content_edit_view.setText(entity?.content)
        }

        note_done_view.setOnClickListener {
            if (entity == null) {
                entity = NoteEntity()
                entity?.title = note_title_edit_view.text.toString()
                entity?.content = note_content_edit_view.text.toString()
                entity?.createdAt = System.currentTimeMillis()
                entity?.updatedAt = System.currentTimeMillis()
                ObjectBox.addData(entity!!)
            }else{
                entity?.title = note_title_edit_view.text.toString()
                entity?.content = note_content_edit_view.text.toString()
                entity?.updatedAt = System.currentTimeMillis()
                ObjectBox.updateData(entity!!)
            }
            finish()
        }
        note_back_view.setOnClickListener {
            finish()
        }
    }
}

3、部分界面展示

安卓程序設(shè)計大作業(yè) 備忘錄,1024程序員節(jié),android,記事本,備忘錄安卓程序設(shè)計大作業(yè) 備忘錄,1024程序員節(jié),android,記事本,備忘錄文章來源地址http://www.zghlxwxcb.cn/news/detail-816361.html

到了這里,關(guān)于Android 備忘錄,記事本程序設(shè)計的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Android Studio——記事本案例

    Android Studio——記事本案例

    一、布局界面 ? ? ? ? 1、記事本界面布局 main_notepad.xml ? ? ? ? 2、記事本Item布局界面 activity_item.xml ? ? ? ? 3、添加、修改界面布局 activity_record.xml 二、封裝記錄信息實體類 ? ? ? ? 記事本的每個記錄都會有記錄內(nèi)容和記錄時間這兩個屬性,因此需要建立一個實體類用于存

    2024年02月05日
    瀏覽(28)
  • Android——記事本功能業(yè)務(wù)(完整代碼)

    Android——記事本功能業(yè)務(wù)(完整代碼)

    目錄 實現(xiàn)效果 一、搭建記事本頁面布局activity_notepad.xml 二、搭建記事本界面Item布局notepad_item_layout.xml 三、封裝記錄信息實體類NotepadBean類 四、編寫記事本界面列表適配器NotepadAdapter類 五、創(chuàng)建數(shù)據(jù)庫 六、實現(xiàn)記事本界面的顯示功能NotepadAdapter.java? 七、搭建添加記錄界面和

    2024年02月03日
    瀏覽(32)
  • Android——多功能記事本(Android Studio)

    Android——多功能記事本(Android Studio)

    拍照 添加畫板 錄音 書寫轉(zhuǎn)文字 添加圖片 1,主頁面 2,功能 貼代碼: 1,AndroidManifest.xml文件(添加權(quán)限) 2,Activity文件 ActivityRecord AddActivity DatabaseOperation GetCutBitampLocation HandWriteActivity LineEditActivity MainActivity PaintActivity PaintView ShowPicture ShowRecord TouchView 3,最后res中drawable文件

    2024年02月11日
    瀏覽(26)
  • 基于Android Studio 開發(fā)的簡易記事本

    基于Android Studio 開發(fā)的簡易記事本

    ?? 文章末尾有獲取完整項目源碼方式 ?? 目錄 一、引言 視頻效果展示: 圖片效果展示: 二、詳細設(shè)計 1.首頁 2.添加和修改頁面 3.登錄頁 4.注冊頁 三、獲取源碼 ? ? ? ? ?Android初學(xué)者開發(fā)第一個完整的基礎(chǔ)實例項目應(yīng)該就屬《記事本》了,該項目基于Android Studio開發(fā)使用

    2024年02月05日
    瀏覽(29)
  • 基于Android的記事本設(shè)計和模塊開發(fā)

    基于Android的記事本設(shè)計和模塊開發(fā)

    有一萬五千字論文,完美運行。 由于編程技術(shù)的迅速發(fā)展,各種記事本APP隨處可見,在人們的日常生活中經(jīng)常使用的到。于是各種記事本APP也跟著發(fā)展起來。本文在通過在Android Studio開發(fā)平臺上開發(fā)一個簡單的多功能語音輸入記事本APP的過程,同時了解記事本APP的功能實現(xiàn),

    2024年02月03日
    瀏覽(32)
  • android studio大作業(yè),android studio課程設(shè)計,記事本實現(xiàn)

    android studio大作業(yè),android studio課程設(shè)計,記事本實現(xiàn)

    先看效果圖 功能點實現(xiàn): 登錄,注冊,記事本分類添加,刪除,數(shù)據(jù)分析統(tǒng)計報表,數(shù)據(jù)庫使用SQLlite 部分實現(xiàn)代碼

    2024年02月11日
    瀏覽(26)
  • 基于Android平臺的記事本軟件(Android Studio項目+報告+app文件)

    基于Android平臺的記事本軟件(Android Studio項目+報告+app文件)

    移動應(yīng)用開發(fā)技術(shù) 期末考核報告 題 ?? 目: ??????? 基于 Android 平臺的記事本軟件 ???????????? 學(xué)生姓名 ? ???????????????????????? ?? 學(xué)生學(xué)號 ? ???????????????????????? ?? 專 ? ?? 業(yè) ? ???????????????????????? 班 ??? 級

    2024年02月08日
    瀏覽(32)
  • 基于安卓系統(tǒng)(android)記事本APP管理系統(tǒng)設(shè)計與實現(xiàn)

    基于安卓系統(tǒng)(android)記事本APP管理系統(tǒng)設(shè)計與實現(xiàn)

    目錄 摘要 I Abstract II 1 緒論 1.1 課題來源、目的和意義 1 1.2 國內(nèi)外基本研究情況 1 2 需求分析 2.1 用戶需求 4 2.2 功能需求 4 2.3 數(shù)據(jù)庫選擇 6 2.4 性能需求 6 3 概要設(shè)計 3.1 功能概要設(shè)計 7 3.2 數(shù)據(jù)庫概要設(shè)計 13 4 詳細設(shè)計 4.1 功能設(shè)計 15 4.2 數(shù)據(jù)庫設(shè)計 30 5 系統(tǒng)功能實現(xiàn) 5.1 系統(tǒng)架

    2024年02月11日
    瀏覽(26)
  • 【Android 記事本,筆記本,可注冊登錄,增刪改查(附源碼)】

    【Android 記事本,筆記本,可注冊登錄,增刪改查(附源碼)】

    簡介 用Sqlite做數(shù)據(jù)庫,用來存儲賬號以及筆記信息,實現(xiàn)了賬號的注冊以及登錄功能,筆記方面實現(xiàn)了新增、刪除、修改、搜索功能,列表展示筆記使用的是listView(懶得弄分割線,就使用listView的默認分割線了); 運行效果 代碼講解 我代碼里使用了兩個依賴,一個是工具

    2024年02月04日
    瀏覽(20)
  • 23種設(shè)計模式-備忘錄模式(Android應(yīng)用場景介紹)

    備忘錄模式 是一種行為型設(shè)計模式,它允許在不破壞封裝性的前提下捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可以將該對象恢復(fù)到原先保存的狀態(tài)。 備忘錄模式通常包括三個角色:原發(fā)器(Originator)、備忘錄(Memento)和負責(zé)人(Caretaker)。原發(fā)

    2023年04月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包