简单的记事本(SQLite+自定义adapter)

Android 做一个简单记事本app 20200513 1、引用了Android studio自带的第一个模板(右下角带小圆按钮的)。项目创建会多带两个java文件(FirstFragment、SecondFragment)以及对应的两个xml文件,这里我尝试将这几个文件删掉结果运行会崩,然后我将这几个文件的主题代码注释掉又没问题。暂时不管那么多。 2、创建一个写东西的activity和对应的xml,新建的activity要在androidManifest.xml文件里面注册。然后在自建Activity的标签里面添加android:window 阅读详情

初学者学习android,做这个小demo时遇到过很多挫折。具体不说了。就简单的说一下这个demo的思路。

1、写一个实体类,里面定义这个demo需要的内容,然后写getXX()和setXX()。
2、首先新建一个数据库类继承SQLiteOpenHelper。在这个类里面进行创建数据库,数据库版本,数据表。
3、然后新建一个类用来对数据库进行增删查改操作。
4、写一个适配器,是view能在listview上展示的桥梁。
5、对各个页面写代码实现功能。

1、写一个实体类,里面定义这个demo需要的内容,然后写getXX()和setXX()

public class note implements Serializable {
    private int id;
    private String title;
    private String time;
    private String content;
    //必须要有无参构造函数
    public note(){

    }
    //有参构造函数
    public note(int id,String title,String time,String content){
        this.id=id;
        this.title=title;
        this.time=time;
        this.content=content;
    }
    public String getTitle(){
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getTime(){
        return time;
    }
    public void setTime(String time){
        this.time=time;
    }
    public String getContent(){
        return content;
    }
    public void setContent(String content){
        this.content=content;
    }
    public Integer getId(){
        return id;
    }
    public void setId(int id){
        this.id=id;
    }
}

2、新建一个数据库类继承SQLiteOpenHelper。在这个类里面进行创建数据库,数据库版本,数据表。

public class MyNoteHelper extends SQLiteOpenHelper{
    //数据库名称
    private static final String DATABASE_NAME="noteDB.db";
    //数据库版本
    private static int DATABASE_VERSION=1;

    //构造函数
    public MyNoteHelper(Context context){
        super(context,DATABASE_NAME,null,DATABASE_VERSION);
    }

    //创建表
    public static final String CREATE_TABLE="CREATE TABLE IF NOT EXISTS MyNotes2("+"id integer primary key autoincrement,"+"title TEXT,"+"time TEXT ,"+"content TEXT)";

    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL(CREATE_TABLE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
       db.execSQL("ALTER TABLE MyNotes2 ADD COLUMN other String");
        onCreate(db);
    }
}

2、新建一个类用来对数据库进行增删查改操作。

public class NoteManager {
    private MyNoteHelper helper;
    private SQLiteDatabase db;
    private Context context;
    public NoteManager(Context context){
        helper= new MyNoteHelper(context);
        db=helper.getWritableDatabase();//打开一个读写的数据库
        this.context=context;
    }
    //插入
    public boolean insert(note note){
    db.beginTransaction();//开始事务锁
        try {
            db.execSQL("INSERT INTO MyNotes2 VALUES(?,?,?,?)",new Object[]{note.getId(),note.getTitle(),note.getTime(),note.getContent()});
            db.setTransactionSuccessful();//完成事务锁
            return true;
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }finally {
            db.endTransaction();//结束事务锁
        }
    }
    //删除
    public void delete(note note){
        db.delete("MyNotes2", "id=?", new String[]{String.valueOf(note.getId())});
    }
    //查询
    public List<note> query() {
        List<note> notes = new ArrayList<>();
        Cursor c = queryItem();
        while (c.moveToNext()) {
            note note = new note();
            note.setId(c.getInt(c.getColumnIndex("id")));
            note.setTitle(c.getString(c.getColumnIndex("title")));
            note.setContent(c.getString(c.getColumnIndex("content")));
            note.setTime(c.getString(c.getColumnIndex("time")));
            notes.add(note);
        }
        c.close();
        return notes;
    }
    //更新
    public boolean update(note note){
        db.beginTransaction();
        try {
            ContentValues values=new ContentValues();
            values.put("title",note.getTitle());
            values.put("content",note.getContent());
            values.put("time", note.getTime());
            db.update("MyNotes2", values, "id=?", new String[]{String.valueOf(note.getId())});
            db.setTransactionSuccessful();
            return true;
        }catch (Exception e){
                e.printStackTrace();
            return false;
        }finally {
            db.endTransaction();

        }
    }
public Cursor queryItem(){
    return db.rawQuery("SELECT * FROM MyNotes2",null);
    //return cursor;
}
    //关闭数据库
    public void closeDB(){
        db.close();
    }
}

4、适配器

public class MyAdapter extends BaseAdapter{
    private List<note> noteList;
    private LayoutInflater inflater;
    private Context context=null;
    public MyAdapter(Context context,List<note> noteList){
        this.context=context;
        this.noteList=noteList;
        inflater=LayoutInflater.from(context);
    }
    @Override
    public int getCount(){
        return noteList.size();
    }
    @Override
    public Object getItem(int position){
        return noteList.get(position);
    }
    @Override
    public long getItemId(int position){
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView==null){
            convertView=inflater.inflate(R.layout.layout,null);
            holder=new ViewHolder();
            holder.title=(TextView)convertView.findViewById(R.id.title_view);
            holder.time=(TextView)convertView.findViewById(R.id.time_view);
            //holder.title.setClickable(true);
            //holder.time.setFocusable(false);
            holder.title.setTextColor(Color.BLACK);
            holder.title.setTextSize(30);
            holder.time.setTextColor(Color.BLACK);
            //holder.title.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
            //holder.time.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);

            //holder.Content=(TextView)convertView.findViewById(R.id.);
            convertView.setTag(holder);
        }else{
            holder=(ViewHolder)convertView.getTag();
        }
        holder.title.setText(noteList.get(position).getTitle());
        holder.time.setText(noteList.get(position).getTime());
        return convertView;
    }
    class ViewHolder{
        TextView title,time;
    }
}

5、listview主页面(MainActivity.class)

public class MainActivity extends AppCompatActivity {
    private NoteManager noteManager;
    private MyAdapter adapter;
    private List<note> notes=new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        noteManager=new NoteManager(this);
        initView();
    }

    @Override
    public void onResume(){
        super.onResume();
        initView();
        adapter.notifyDataSetChanged();
    }
    @Override
    public void onDestroy(){
        super.onDestroy();
        noteManager.closeDB();
    }

    public void initView(){
        notes=noteManager.query();
        adapter=new MyAdapter(this,notes);
        final ListView listView=(ListView)findViewById(R.id.lv);
        listView.setAdapter(adapter);

        Button btn=(Button)findViewById(R.id.newBtn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i=new Intent(MainActivity.this,AddActivity.class);
                startActivity(i);
            }
        });


        //长按删除
        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
                final AlertDialog.Builder mDialog=new AlertDialog.Builder(MainActivity.this);
                mDialog.setTitle("提示!");
                mDialog.setMessage("确定删除?");
                mDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog,int which) {
                        dialog.dismiss();
                        noteManager.delete(notes.get(position));
                        notes.remove(position);
                        adapter.notifyDataSetChanged();
                    }
                });
                mDialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog,int which) {
                        dialog.dismiss();
                    }
                });
                mDialog.setCancelable(true);
                mDialog.show();
                return true;
            }

        });

        //单击编辑
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(MainActivity.this, InActivity.class);
                Bundle bundle = new Bundle();
                bundle.putSerializable("inDetail", notes.get(position));
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
    }

详情页(InActivity.class)

public class InActivity extends AppCompatActivity {
    private NoteManager noteManager;
    private note note=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_in);
        noteManager=new NoteManager(this);
        init();
        click1();//修改
        click2();//保存
    }
    //修改
    private void click1(){
        Button updateBtn=(Button)findViewById(R.id.upgradeBtn);
        updateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText title = (EditText) findViewById(R.id.title_ined);
                EditText content = (EditText) findViewById(R.id.content_ined);
                title.setEnabled(true);//设置为可写状态
                content.setEnabled(true);//设置为可写状态
                title.setTextColor(Color.BLACK);
                content.setTextColor(Color.BLACK);
            }
        });
    }
    //保存
    private void click2(){
        Button saveBtn=(Button)findViewById(R.id.save_inBtn);
        saveBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                updateDetail();
            }
        });
    }
    private void init(){
        EditText title=(EditText)findViewById(R.id.title_ined);
        EditText time=(EditText)findViewById(R.id.time_tvin);
        EditText content=(EditText)findViewById(R.id.content_ined);

        Intent intent=this.getIntent();
        note=(note)intent.getSerializableExtra("inDetail");
        title.setText(note.getTitle());
        content.setText(note.getContent());
        title.setEnabled(false);
        content.setEnabled(false);
        time.setEnabled(false);
        title.setTextColor(Color.GRAY);
        content.setTextColor(Color.GRAY);
    }
    private void updateDetail(){
        EditText title=(EditText)findViewById(R.id.title_ined);
        EditText content=(EditText)findViewById(R.id.content_ined);
        String title1=title.getText().toString();
        String content1=content.getText().toString();
        SimpleDateFormat format=new SimpleDateFormat("MM-dd HH:mm");
        Date date=new Date(System.currentTimeMillis());
        String time1=format.format(date);
        note note1=new note();
        note1.setId(note.getId());
        note1.setTitle(title1);
        note1.setContent(content1);
        note1.setTime(time1);


        if(noteManager.update(note1)){
            Toast.makeText(this,"更改成功!",Toast.LENGTH_LONG).show();
            Intent intent=new Intent(InActivity.this,MainActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(intent);
            finish();
        }else{
            Toast.makeText(this,"更新失败,保存不成功!",Toast.LENGTH_LONG).show();
        }

    }

新建页(AddActivity.class)

public class AddActivity extends AppCompatActivity {
    private NoteManager noteManager;
    private SharedPreferences sharedPreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);
        noteManager=new NoteManager(this);
        click();
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        noteManager.closeDB();
    }

    public void add(){
        EditText ed_title=(EditText)findViewById(R.id.title_ed);
        EditText ed_content=(EditText)findViewById(R.id.content_ed);

        String title=ed_title.getText().toString().trim();
        String content=ed_content.getText().toString();

        SimpleDateFormat format=new SimpleDateFormat("MM-dd HH:mm");
        Date date=new Date(System.currentTimeMillis());
        String time=format.format(date);

        int id=getPreferences();

        note note=new note();
        note.setId(id);
        note.setTitle(title);
        note.setContent(content);
        note.setTime(time);
        if(title.equals("")||content.equals("")){
            Toast.makeText(this,"请填写标题和内容",Toast.LENGTH_LONG).show();
            return;
        }
        if(noteManager.insert(note)){
            getIdEditor(id);
            Toast.makeText(this,"保存成功!",Toast.LENGTH_LONG).show();
            Toast.makeText(this,"id"+id,Toast.LENGTH_LONG).show();
            Intent intent=new Intent(AddActivity.this,MainActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(intent);
            finish();
        }else{
            Toast.makeText(this,"保存不成功!",Toast.LENGTH_LONG).show();
            Toast.makeText(this,"id"+id,Toast.LENGTH_LONG).show();
        }
        noteManager.closeDB();//关闭数据库

    }
    private int getPreferences(){
        sharedPreferences=getSharedPreferences("id",Context.MODE_PRIVATE);
        return sharedPreferences.getInt("id",1);

    }
    private int getIdEditor(int id){
        SharedPreferences.Editor editor=sharedPreferences.edit();
        editor.putInt("id",++id);
        editor.commit();
        return id;
    }
    private void click(){
        Button saveBtn=(Button)findViewById(R.id.saveBtn);
        saveBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                add();
            }
        });
    }

item布局:layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="15dp"
    android:layout_marginBottom="25dp"
   <!--下面这条语句是防止子类控件的点击事件触发而导致listview的点击事件无法触发-->
    android:descendantFocusability="blocksDescendants"
    android:orientation="horizontal">
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/title_view"
        android:layout_weight="2" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:inputType="time"
        android:ems="10"
        android:id="@+id/time_view"
        android:layout_weight="1" />
</LinearLayout>

mainActivity的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/newNote"
        android:id="@+id/newBtn"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/lv"
        android:layout_below="@+id/newBtn"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        tools:listitem="@android:layout/simple_list_item_1"
        android:divider="@android:drawable/divider_horizontal_textfield" />
</RelativeLayout>

新建布局(AddActivity)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context="note.mynote.AddActivity">

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/title_ed"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:hint="@string/title_ed" />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:ems="10"
        android:id="@+id/content_ed"
        android:hint="@string/content_ed"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/title_ed" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/saveBtn"
        android:id="@+id/saveBtn"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

详情页(InActivity)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context="note.mynote.InActivity"
    android:id="@+id/inContent">

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/title_ined"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:hint="@string/title_ed" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="time"
        android:ems="10"
        android:id="@+id/time_tvin"
        android:layout_below="@+id/title_ined"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:visibility="invisible" />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/content_ined"
        android:layout_below="@+id/time_tvin"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:hint="@string/content_ed" />
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true">
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="@string/upgradeBtn"
        android:id="@+id/upgradeBtn"
        android:layout_weight="1"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"/>
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="@string/saveBtn"
        android:id="@+id/save_inBtn"
        android:layout_weight="1"
        android:layout_alignParentBottom="true"
        android:layout_alignRight="@+id/editText"
        android:layout_alignEnd="@+id/editText" />
</LinearLayout>
</RelativeLayout>

好了,就这样子,初学者哈,有什么不足之处请各位多多原谅以及多多指教哈。

记事本 记事本记事本简介记事本界面设计编写程序代码多格式文本框代码(RichTextBox)菜单代码工具栏代码计时器代码窗体代码 记事本简介 记事本界面设计 编写程序代码 多格式文本框代码(RichTextBox) 菜单代码 工具栏代码 计时器代码 窗体代码 ... 阅读详情

相关推荐

简单的安卓记事本

在Android系统的手机开发平台之上,研究与开发一个记事本软件,提供适用手机的记事本功能服务。流程图: 数据库设计实现:        该系统所有数据存在数据库中,本次实验采用SQLite来对数据库进行操作。 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它具有零配置、足够小、操作速度快等优点,被广泛应用于手机应用软件中。

polmJ 1万+

C# 操作SQLite3数据库(内附操作源码分享)

C#使用辅助类,操作SQLite3数据库,帮助大家在使用单机库时少走弯路

weixin_39525333的博客 4349

Android小项目:记事本

前几天写了一个Android记事本小程序,现在记录一下。 考虑到是记事本小程序,记录的内容只有文字,而且内容不会太长,所以选择使用SQLite数据库,数据存放在用户的手机上。 牵涉到数据库,那自然是一个实体。先设计实体数据表:DBHelper.java package com.ikok.notepad.DBUtil; import android.content.Context; impo

someone_ikok的博客 1万+

C#记事本项目开发,一个可以实现批量操作的记事本!【附源码】

基于C#开发的一款记事本软件,包括记事本文件的新建、打开、读取、保存、文本的加粗、倾斜、字体、字号,记事本的批量操作等。 目录记事本子窗体获取系统字体函数字体空间函数字号空间函数加粗控件函数倾斜控件函数保存控件函数打开文件控件函数:新建文本控件函数窗体关闭控件函数主控页面父窗体新建记事本关闭窗体关闭全部窗体退出控件 Hello!大灰狼又来和大家分享值得学习的C#开发项目了,今天和大家分享一个大家应该都比较熟悉的开发项目—“记事本”。 很多小伙伴可能也都使用过记事本来记录一些自己比较重要或者容易忘记的事情.

累计发表博客60余万字,优快云 博客专家、Java 领域优质创作者、华为云享专家、阿里云专家博主。专注分享 Java 优质文章,毕设实战项目开发,全网粉丝10W+ 5277

Android 记事本-Demo

实现功能1:文本数据的存储 2:图片数据存储 3:视频数据存储 4:自定义的Adapter 5:SQlite的创建 6:数据listview列表的显示 界面布局<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro

三四余年 1万+

Android记事本开发实战:从SQLite到RecyclerView的完整CRUD实现

在Android应用开发中,数据持久化与高效UI展示是两大核心基础。SQLite作为Android内置的轻量级关系型数据库,提供了本地结构化数据存储的可靠方案,其通过SQLiteOpenHelper进行数据库创建与版本管理,是实现CRUD(增删改查)操作的关键。RecyclerView则是现代Android列表展示的标准组件,通过Adapter模式高效管理视图复用,大幅提升了长列表的性能与灵活性。结合Material Design设计语言,开发者能够构建出既美观又流畅的用户界面。这些技术共同支撑了诸如记事本

weixin_30787531的博客 342

C#实现简易记事本

本应用使用C#语言Windows窗体应用程序设计,是对Windows记事本部分简单功能的复现, 1.记事本界面及功能展示 2.界面设计过程 2.1 MenuStrip 从工具箱拖入Menustrip命名为menuStrip1 并在该menustrip下新建文件、新建、打开、保存、另存为、退出、编辑、撤销、剪切、复制、粘贴、删除、全选、日期、格式、自动换行、字体、查看、帮助、关于笔记本等上述ToolStripMenuItem。 Name属性依次更改为文件Too...

weixin_50425831的博客 2325

使用C#开发的Sqlite数据库创建、操作的源码项目工程

这是一个使用C#开发的Sqlite数据库创建、操作的源码工程,关于Sqlite的所有操作已经单独创建了专门的跨平台【.NETCore3.1】类库包含相应的帮助类,可以直接生成后拿到任何项目中直接使用,高效简单,省去了从头开发Sqlite数据库的时间,将更多的精力用于业务内容;该项目工程的主要功能如下: ①可以获取到关于Sqlite数据库的2种常用连接字符串【不加密、加密】(也可以自己传入); ②可以代码直接创建Sqlite数据库; ③可以直接创建Sqlite数据库的表; ④实现了通用的sql语句执行帮助类(包含单条数据的插入、批量插入、事务处理、查询(指定内容查询、分页查询)、更新、删除等操作); ⑤可以直接获取Sqlite数据库中的所有表名称及其表包含的所有列名称; ⑥包含了一个完整的Sqlite数据库、表创建、数据的增、删、查、改、获取数据库所有表和表包含的所有字段的使用示例。 ⑦还包含了关于sqlite内存数据库的帮助类和完整数据库、表创建、数据的增、删、查、改、获取数据库所有表和表包含的所有字段的使用示例。

Android Studio|简单记事本开发

目录 效果展示: 路径和文件: AndroidManifest.xml AddContent.java MainActivity.java MyAdapter.java NoteDb.java ShowContent.java activity_add_content.xml activity_main.xml activity_show_content.xml item.xml 效果展示: 路径和文件: AndroidManifest.xml <?xm.

weixin_46499784的博客 1万+

告别GPS,用Sentinel-1数据+Python实战SBAS-InSAR监测城市地面沉降(保姆级教程)

本文详细介绍了如何利用Sentinel-1数据和Python实现SBAS-InSAR技术监测城市地面沉降。通过保姆级教程,从环境配置、数据获取到干涉处理、时序分析和形变反演,逐步解析全流程技术细节,帮助读者掌握毫米级精度的形变监测方法,并以上海陆家嘴区域为例展示实际应用效果。

weixin_32771907的博客 536

Cluster Computing投稿

在overleaf中新建picins.sty文件,该文件是导入的包在.tex文件中添加以下内容\usepackage{picins}%实现作者简介%下边这块有几个人复制几段\vspace{0\baselineskip} %这一行控制作者间隔,可视情况改数字!!!!!!!!

这里是萤石ym的学习路途,努力搬砖! 5535

Android:实现安卓小程序-记事本(备忘录)的开发

目录 1. 前言 2. 记事本功能需求 3. 部分关键代码解析及程序截图 3.1 记事本类的基本设计 3.2记事本的数据存储设计 3.3 主界面的设计 3.4 记事本的编辑 3.5 记事本的背景色设置 3.6 记事本的闹铃功能 3.7 高级搜索 4. 总结 1. 前言 在学习安卓开发这门课程中期,学会了安卓开发的基本知识,比如,UI组件的应用,Intent的应用等等,同...

DieForCode的博客 2万+

保姆级教程:用PyTorch从零实现SDE扩散模型(附完整代码与MNIST实战)

本文提供了一份详细的PyTorch教程,指导读者从零开始实现SDE扩散模型,并附有完整的代码示例和MNIST数据集实战。通过解释随机微分方程(SDE)的核心概念、模型架构设计、训练流程实现以及采样生成过程,帮助开发者掌握扩散模型的构建与应用。

weixin_28677005的博客 266

android记事本连接sqlite,listview与SQLite结合实现记事本功能

android记事本的demo在网上一搜一大堆,但是大神写的demo往往功能太多导致新手难以着手,很难啃得动;而一些新手写的demo又往往是东拼西凑,代码很多都是copy的别人的,直接放在项目里面用,也不知道代码有什么作用。往往代码特别丑,重复性的代码也比较多。笔者近期学到此处,自己理解之后也还是打算写个demo供新手学习一下。代码说不上优雅,但在笔者看来已经尽力去让人容易理解了。(源码在文章结尾...

weixin_42715262的博客 535

SMARTFORMS实战:用Template+Loop实现复杂表格布局(附避坑指南)

本文深入解析了SMARTFORMS中Template与Loop组合实现复杂表格布局的实战技巧,突破传统TABLE组件的限制。通过多级表头、单元格合并等案例演示,提供从基础架构搭建到动态数据绑定的完整解决方案,并分享性能优化与异常处理的最佳实践,助力开发者高效应对企业级报表设计挑战。

numpy6sculptor的博客 805

OSG 核心详解

OpenSceneGraph (OSG) 的核心架构、场景图管理以及几何体的绘制

qq_45859163的博客 729

Android手机开发课程设计之记事本

一、需求分析 1.1业务需求分析 近年来,随着生活节奏的加快,工作和生活的双重压力全面侵袭着人们,如何避免忘记工作和生活中的诸多事情而造成不良的后果就显得非常重要。为此我们开发一款基于Android系统的简单记事本,其能够便携记录生活和工作对诸多事情,从而帮助人们有效地进行时间管理。 1.2功能需求分析 本记事本项目希望可以开发出一款符合用户生活工作习惯的简单应用,能够满足用户的各方面需求,可以对记事进行增加、查看、修改和删除,要求功能完善丰富并且具有良好的用户界面和交互体验。 二、项目设计 2.1功能模块

qq_44111805的博客 1万+

实现两端固支梁热力耦合的有限元分析

在本文中,我们将使用Matlab实现两端固支梁的热力耦合有限元分析。我们假设梁的材料是均匀的,梁的截面积为1,长度为1,两端固支,且受到均匀分布的热荷载。接下来,我们需要组装全局刚度矩阵和热传导矩阵。对于两个相邻的元素,它们共享一个节点,因此需要使用连接矩阵将局部矩阵组装成全局矩阵。接下来,我们需要定义元素刚度矩阵和热传导矩阵。然后,我们需要定义载荷向量。然后,我们需要定义边界条件。在这个例子中,梁的两端固支,因此我们需要将两端节点的位移限制为0。最后,我们需要解决线性方程组,得到节点的位移和温度分布。

CyberSparkZ的博客 396

android 记事本demo!!!(listview与SQLite综合)

android记事本的demo在网上一搜一大堆,但是大神写的demo往往功能太多导致新手难以着手,很难啃得动;而一些新手写的demo又往往是东拼西凑,代码很多都是copy的别人的,直接放在项目里面用,也不知道代码有什么作用。往往代码特别丑,重复性的代码也比较多。 笔者近期学到此处,自己理解之后也还是打算写个demo供新手学习一下。代码说不上优雅,但在笔者看来已经尽力去让人容易理解了。(源码在文章...

许佳佳的博客 1万+

基于MATLAB的语音声强度和响度分析及处理

综上所述,本文介绍了如何使用MATLAB进行语音信号的声强度和响度分析,并提供了相应的源代码。通过这些工具和方法,可以更好地理解和处理语音信号的声强度和响度特性,为语音信号处理和音频应用提供支持。声强度(Intensity)和响度(Loudness)是语音信号中常用的两个重要参数,用于描述声音的强度和感知响度。响度均衡化:可以通过对语音信号施加不同的加权滤波器,调整信号的频谱分布,从而改变声音的响度。除了分析语音信号的声强度和响度,MATLAB还提供了丰富的工具和函数,用于处理语音信号的声强度和响度。

COWizard的博客 617

170、电机控制中的温升测试

本文以一次IGBT炸管事故为切入点,深入剖析电机控制中温升测试的实质:不仅是温度测量,更是对铜损、铁损、散热效率等热管理问题的系统验证。作者强调测试前热电偶布置、环境记录、预运行的重要性,提出实时监控电流谐波、绕组电阻、散热梯度等关键参数,并通过损耗分离与冷却系统实测,揭示真实热源。结合温升曲线异常分析与经验建议,强调留余量、仿真结合实测、关注瞬态工况等实践要点,警示温升测试是保障可靠性与安全性的核心环节。

2401_88858637的博客 49

android 记事本demo_Android实现记事本功能

本文实例为大家分享了Android实现记事本功能的具体代码,供大家参考,具体内容如下实现功能1、文本数据的存储2、图片数据存储3、视频数据存储4、自定义的Adapter5、SQlite的创建6、数据listview列表的显示demo地址界面布局xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_pare...

weixin_39606799的博客 429

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android简易记事本

此次做的Android简易记事本的存储方式使用了SQLite数据库,然后界面的实现比较简单,但是,具有增删改查的基本功能,这里可以看一下效果图,如下: 具体操作就是长按可以删除操作,点击可以进行修改,点击添加笔记按钮可以添加一个笔记。首先我们需要三个界面样式一个是我们的进入程序时的第一个界面,然后第一个界面里面有一个ListView,这个ListView需要一个xml来描述里面的各个元素,这也

lger_Pro的博客 3674

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android 开发简单记事本程序(附源码)

简单介绍一下功能:简单记事本只能添加文字内容,首页用ListView显示所有保存的事项和保存的时间,添加页面添加内容,点击首页的ListView可以查看内容,删除内容。 先看一下运行效果: 先建立数据库: package com.engineer.shizhibin.note; import android.content.Context; import an...

bingocoder的博客 6万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android记事本案例

** Android记事本案例 ** 话不多说,上代码: 先创建数据库: DBUtils 类: package com.xyy.note; import java.text.SimpleDateFormat; import java.util.Date; public class DBUtils { public static final String DATABASE_NAME = "Notepad"; public static final String DATABASE_TABLE

四块的博客 4243

SQLite数据库和自定义ListView的使用

在这个demo中设计到的知识点有: 1、创建数据库 2、将数据插入数据库中 3、将数据从数据库中删除 4、更新数据库中的数据 5、在数据库中进行查找 6、获取表中的所有数据 7、自定义ListView(自定义Adapter) 8、删除ListView中的item 1、创建数据库 SQLiteOpenHelper 这个类可以帮助我们对数据库进行创建和

run 的博客 2286
上一篇: android部分目录分析
下一篇: listview中item点击无反应
Yienfong_Chueng
博客等级 码龄12年 187粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值