首页 > 其他分享 >Android Studio实例:绿豆通讯录

Android Studio实例:绿豆通讯录

时间:2024-09-25 10:51:23浏览次数:3  
标签:name db Studio 通讯录 new import Android id android

步骤一:

了解项目结构

步骤二:

首先是继承SQLiteOpenHelper的数据库自定义类

创建Java文件MyHelper.java

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyHelper extends SQLiteOpenHelper {
    public MyHelper(Context context) {
//上下文、数据库名、工厂、版本
        super(context, "itcast.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
//创建数据表 db.execSQL执行建表语句
        db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), phone VARCHAR(20))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

步骤三:主界面的界面代码的创建

1.主界面:

效果

代码:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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:background="@drawable/bg"
    android:paddingLeft="16dp"
    android:paddingTop="16dp"
    android:paddingRight="16dp"
    android:paddingBottom="16dp"
    tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/ll_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/ll_phone"
        android:layout_alignStart="@+id/ll_btn"
        android:layout_alignLeft="@+id/ll_btn">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓  名 :"
            android:textSize="18sp" />

        <EditText
            android:id="@+id/et_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入姓名"
            android:textSize="16sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll_phone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/ll_btn"
        android:layout_alignStart="@+id/ll_name"
        android:layout_alignLeft="@+id/ll_name"
        android:layout_marginBottom="10dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="电  话 :"
            android:textSize="18sp" />

        <EditText
            android:id="@+id/et_phone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入手机号码"
            android:textSize="16sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true">

        <Button
            android:id="@+id/btn_add"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:background="#B9B9FF"
            android:text="添加"
            android:textSize="18sp" />

        <Button
            android:id="@+id/btn_query"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:background="#DCB5FF"
            android:text="查询"
            android:textSize="18sp" />

        <Button
            android:id="@+id/btn_update"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:background="#E6CAFF"
            android:text="修改"
            android:textSize="18sp" />

        <Button
            android:id="@+id/btn_delete"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#ACD6FF"
            android:text="删除"
            android:textSize="18sp" />
    </LinearLayout>
    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/ll_btn"
        android:layout_margin="5dp"
        android:divider="#d9d9d9"
        android:dividerHeight="2dp">
    </ListView>

</RelativeLayout>

2.列表功能页:

代码:

<?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="wrap_content">
    <ImageView
        android:id="@+id/item_image"
        android:layout_width="100px"
        android:layout_height="100px"
        android:layout_margin="8dp"
        android:background="@drawable/tx" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/item_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="3sp"
            android:text="姓名"
            android:textColor="#00FFFF"
            android:textSize="17sp" />

        <TextView
            android:id="@+id/item_phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="电话"
            android:textColor="#7FFFAA"
            android:textSize="16sp" />
    </LinearLayout>
</LinearLayout>

步骤四: 逻辑代码MainActivity

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    MyHelper myHelper;
    private EditText mEtName;
    private EditText mEtPhone;
    private Button mBtnAdd;
    private Button mBtnQuery;
    private Button mBtnUpdate;
    private Button mBtnDelete;

    private ListView mList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //new创建对象  传递上下文this
        myHelper = new MyHelper(this);
        init();//初始化控件 绑定控件
    }

    private void init() {
        mEtName = (EditText) findViewById(R.id.et_name);
        mEtPhone = (EditText) findViewById(R.id.et_phone);
        mBtnAdd = (Button) findViewById(R.id.btn_add);
        mBtnQuery = (Button) findViewById(R.id.btn_query);
        mBtnUpdate = (Button) findViewById(R.id.btn_update);
        mBtnDelete = (Button) findViewById(R.id.btn_delete);
        mBtnAdd.setOnClickListener(this);
        mBtnQuery.setOnClickListener(this);
        mBtnUpdate.setOnClickListener(this);
        mBtnDelete.setOnClickListener(this);
        mList = (ListView) findViewById(R.id.lv);
    }

    @Override
    public void onClick(View v) {
        String name;
        String phone;
        SQLiteDatabase db;
        ContentValues values;
        int id = v.getId();
        if (id == R.id.btn_add) { //添加数据
            name = mEtName.getText().toString();
            phone = mEtPhone.getText().toString();
            db = myHelper.getWritableDatabase();//获取可读写SQLiteDatabse对象
            values = new ContentValues();       // 创建ContentValues对象
            values.put("name", name);           // 将数据添加到ContentValues对象
            values.put("phone", phone);         // 将数据添加到ContentValues对象
            db.insert("information", null, values);//执行方法insert向数据表添加数据
            Toast.makeText(this, "信息已添加", Toast.LENGTH_SHORT).show();//提示框
            db.close();//关闭db
        } else if (id == R.id.btn_query) { //查询数据
            Toast.makeText(this, "query", Toast.LENGTH_SHORT).show();
            db = myHelper.getReadableDatabase();
            if (mEtName.getText().toString().isEmpty()) {
                Cursor cursor = db.query("information", null, null, null, null, null, null);//Cursor作为一种游标的存储类型,来存储获取到的数据
                SimpleCursorAdapter spcAdapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor,
                        new String[]{"name", "phone"}, new int[]{R.id.item_name, R.id.item_phone});
                mList.setAdapter(spcAdapter);
            } else {
                Cursor cursor = db.rawQuery("select * from information where name=?", new String[]{mEtName.getText().toString()});
                SimpleCursorAdapter spcAdapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor,
                        new String[]{"name", "phone"}, new int[]{R.id.item_name, R.id.item_phone});
                mList.setAdapter(spcAdapter);
            }
            //cursor.close();
            //db.close();
        } else if (id == R.id.btn_update) { //修改数据
            db = myHelper.getWritableDatabase();
            values = new ContentValues();       // 要修改的数据
            values.put("phone", phone = mEtPhone.getText().toString());
            db.update("information", values, "name=?",
                    new String[]{mEtName.getText().toString()}); // 更新并得到行数
            Toast.makeText(this, "信息已修改", Toast.LENGTH_SHORT).show();
            db.close();
        } else if (id == R.id.btn_delete) { //删除数据
            db = myHelper.getWritableDatabase();
            db.delete("information", "name=?", new String[]{mEtName.getText().toString()});
            Toast.makeText(this, mEtName.getText().toString() + "信息已删除", Toast.LENGTH_SHORT).show();
            db.close();
        }
    }
}

标签:name,db,Studio,通讯录,new,import,Android,id,android
From: https://blog.csdn.net/2401_83566316/article/details/142517333

相关文章

  • Android线程使用总结
    Android线程使用总结1.ThreadingPerformance在程序开发的实践当中,为了让程序表现得更加流畅,我们肯定会需要使用到多线程来提升程序的并发执行性能。但是编写多线程并发的代码一直以来都是一个相对棘手的问题,所以想要获得更佳的程序性能,我们非常有必要掌握多线程并发编程......
  • 我是如何开发一款支持IDEA、PyCharm、Android Sutdio 等JB全家桶的摸鱼插件的
    公众号「古时的风筝」,专注于后端技术,尤其是Java及周边生态。个人博客:www.moonkite.cn大家好,我是风筝前些天做了一款支持Jetbrains大部分IDE的摸鱼插件-一款IDE摸鱼插件,没想到出乎意料的没什么人用,当初说VsCode里面的养宠物的插件时,一大堆人问IDEA里有没有、PyChar......
  • Android连接蓝牙自定义封装SDK(基于Cordova与ionic)
    今天给大家分享一款基于Cordova与ionic框架自定义封装的Android手机连接蓝牙的插件。自己公司遇到的业务需求是,与第三方公司合作,需要在项目现场打印项目物资与物料验收单,后期提供给财务核对报销等。第三方公司提供蓝牙打印机与手持机,我们需要自己结合业务开发相对应的功能。......
  • Android studio 新建项目gradle依赖下载超时
    版本信息:android-studio-2024.1.2.12gradle-8.7&使用groovy配置项目配置:修改settings.gradle文件,将阿里云镜像仓库添加到google{}和mavenCentral()上方,不要随意改变仓库位置,仓库列出顺序决定 Gradle在这些仓库中搜索各个项目依赖项的顺序。pluginManagement{......
  • Android获取Toolbar中Menu项的Menu
    在Android中,如果你想要获取Toolbar中Menu项的View,通常是在onCreateOptionsMenu方法中设置菜单项,并在onOptionsItemSelected方法中处理菜单项的选择事件。但是,如果你需要直接获取某个菜单项的视图(例如,为了修改它的外观或行为),你可以使用MenuItem对象的getActionView()方法。下面是一......
  • Android 11.0 蓝牙音乐获取歌手、歌曲等信息功能实现
    1.前言在11.0的系统rom定制化开发中,在一些功能性开发中,可能会遇到一些蓝牙音乐的项目,所以会要求在手机端获取蓝牙音乐的歌手歌曲的信息功能,这就需要了解Bluetooth的音乐播放功能,然后实现这些获取歌手信息和歌曲详情的功能2.蓝牙音乐获取歌手、歌曲等信息功能实现的核心类pa......
  • 安卓主板_MTK联发科android智能主板方案
    新移科技安卓智能主板,是采用联发科MT8766、MT6762、MT6765、MT8788等芯片平台,64bit四核/八核Cortex-A73/A53架构,主频高达2.3GHZ,是一款性能功能强大的4G安卓平台。板载多路显示屏接口:双LVDS、MIPI、EDP、HDMI多种显示输出接口。内置屏背光电源,3V/5V/12V屏电压跳线,兼容多种种......
  • YOLOv5:Android手机NCNN部署
    视频链接:YOLOv5:Android手机NCNN部署_哔哩哔哩_bilibili 《YOLOv5:Android手机NCNN部署》课程致力于帮助学生实战YOLOv5目标检测算法在Android手机上的NCNN部署。常心老师将手把手带领大家从0开始搭建YOLOv5+Android+NCNN环境,带领大家排坑、避坑、填坑。本课程将进行环境搭......
  • Android源码下用Android.bp组织C++项目
    使用Android.bp在Android源码下编译C++项目Android.bp用法1.把自己的C++项目放到Android源码目录下,进入项目,执行mm或mma编译项目2.会自动查找此目录下所有的Android.bp,根据bp的规则编译项目Android.bp函数作用介绍//为C/C++编译(cc_library、cc_binary等模块)设置一些......
  • CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
    前言今天大姚给大家分享一款由.NET开源、免费、强大的VisualStudio代码简化、整理、格式化实用插件:CodeMaid。工具介绍CodeMaid是一款由.NET开源、免费、强大的VisualStudio实用插件,旨在帮助开发者简化、清理和格式化他们的C#、C++、VB.NET、F#、XAML、CSS、LESS、SCSS、Java......