Android Studio 简易通讯录制作 (Java)

这篇具有很好参考价值的文章主要介绍了Android Studio 简易通讯录制作 (Java)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通讯录首页:

Android Studio 简易通讯录制作 (Java)

 添加联系人页面:

Android Studio 简易通讯录制作 (Java)

 修改联系人:

Android Studio 简易通讯录制作 (Java)

删除联系人:

Android Studio 简易通讯录制作 (Java)

 程序代码:

MainActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import androidx.appcompat.app.AlertDialog;
import android.content.DialogInterface;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import java.util.List;

public class MainActivity extends AppCompatActivity{
    private ImageView iv_add;
    private ListView lv_show;
    private EditText et_name,et_phone;
    private MyAdapter myAdapter;
    private DBHelper dbHelper;
    private List<User> userList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv_add = findViewById(R.id.iv_add);
        lv_show = findViewById(R.id.lv_show);
        if (userList != null) {
            userList.clear();
        }
        dbHelper = new DBHelper(MainActivity.this, "user.db", null, 1);
        updateListView();
        iv_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                addData();
            }
        });
        lv_show.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                updateData(position);
            }
        });
        lv_show.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                deleteData(position);
                return true;
            }
        });
    }
    private void addData() {
        AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
        View dialogView=View.inflate(MainActivity.this,R.layout.dialog,null);
        builder.setIcon(R.drawable.icon)
                .setTitle("添加联系人")
                .setView(dialogView);
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                et_name=dialogView.findViewById(R.id.et_name);
                et_phone=dialogView.findViewById(R.id.et_pwd);
                String name=et_name.getText().toString();
                String phone=et_phone.getText().toString();
                if (phone.length()!=11){
                    showToast("电话号码长度不符合要求");
                }else {
                    User user=dbHelper.get(name);
                    if (user.getName()==null){
                        if (dbHelper.insert(name,phone)){
                            showToast("添加成功");
                            updateListView();
                        }else{
                            showToast("添加失败");
                        }
                    }else {
                        showToast("该联系人已存在");
                    }
                }
            }
        })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        AlertDialog alertDialog=builder.create();
        alertDialog.show();
    }
    private void deleteData(int position) {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.drawable.icon)
                .setTitle("提示")
                .setMessage("是否删除该联系人?")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        User user = (User) myAdapter.getItem(position);
                        String deleteId = user.getId();
                        if (dbHelper.delete(deleteId)) {
                            updateListView();
                            showToast("删除成功");
                        } else {
                            showToast("删除失败");
                        }
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }

    private void updateData(int position) {
        View dialogView = View.inflate(MainActivity.this, R.layout.dialog, null);
        User user = (User) myAdapter.getItem(position);
        et_name = dialogView.findViewById(R.id.et_name);
        et_phone = dialogView.findViewById(R.id.et_pwd);
        et_name.setText(user.getName());
        et_phone.setText(user.getPhone());
        String findId = user.getId();
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.drawable.icon)
                .setTitle("修改联系人")
                .setView(dialogView)
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String name = et_name.getText().toString();
                        String phone = et_phone.getText().toString();
                        if (phone.length()!=11){
                            showToast("电话号码长度不符合要求");
                        }else {
                            User user=dbHelper.get(name);
                            if (user.getName()==null){
                                if (dbHelper.update(findId,name,phone)){
                                    showToast("修改成功");
                                    updateListView();
                                }else{
                                    showToast("修改失败");
                                }
                            }else {
                                showToast("该联系人已存在");
                            }
                        }
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }
    public void updateListView(){
        userList=dbHelper.query();
        myAdapter=new MyAdapter(userList,MainActivity.this);
        lv_show.setAdapter(myAdapter);
    }
    public void showToast(String msg){
        Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
    }
}

MyAdapter.java

package com.example.myapplication;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;

public class MyAdapter extends BaseAdapter {
    //使用list<Nate>,list会存储数据库中note表所有记录。
    private List<User> list;
    //用于将某个布局转换为view的对象。
    private LayoutInflater layoutInflater;
    //当创建MyAdapter对象的时候,需要list的数据
    public MyAdapter(List<User> list, Context context){
        this.list=list;
        layoutInflater=LayoutInflater.from(context);
    }
    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if (convertView==null){
            convertView=layoutInflater.inflate(R.layout.item,null,false);
            viewHolder=new ViewHolder(convertView);
            convertView.setTag(viewHolder);
        }else {
            viewHolder=(ViewHolder)convertView.getTag();
        }
        //将数据库中的内容加载到对应的控件上
        User user =(User) getItem(position);
        viewHolder.tv_showName.setText(user.getName());
        viewHolder.tv_showPhone.setText(user.getPhone());
        return convertView;
    }
    //用于给item的视图加载数据内容。
    class ViewHolder{
        TextView tv_showName,tv_showPhone;
        public ViewHolder(View view){
            tv_showName=view.findViewById(R.id.tv_showName);
            tv_showPhone=view.findViewById(R.id.tv_showPhone);
        }
    }
}

 DBHelper.java

package com.example.myapplication;

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

import androidx.annotation.Nullable;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class DBHelper extends SQLiteOpenHelper {
    private SQLiteDatabase db;
    ContentValues contentValues = new ContentValues();
    public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        db=this.getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table user(id integer primary key autoincrement,name text,phone text)");
    }
    //添加数据
    public boolean insert(String name,String phone) {
        contentValues.put("name", name);
        contentValues.put("phone", phone);
        long result = db.insert("user", null, contentValues);
        return result > 0 ? true : false;
    }
    public boolean delete(String id){
        int result=db.delete("user","id=?",new String[]{id});
        return result>0?true:false;
    }
    //修改数据,根据id进行修改
    public boolean update(String id,String name,String phone){
        contentValues.put("id",id);
        contentValues.put("name",name);
        contentValues.put("phone",phone);
        int result=db.update("user",contentValues,"id=?",new String[]{id});
        return result>0?true:false;
    }
    //查询数据,查询表中的所有内容,将查询的内容用note的对象属性进行存储,并将该对象存入集合中。
    public List<User> query(){
        List<User> list=new ArrayList<>();
        Cursor result=db.query("user",null,null,null,
                null,null,null,null);
        if (result!=null){
            while (result.moveToNext()) {
                User user = new User();
                user.setId(String.valueOf(result.getInt(0)));
                user.setName(result.getString(1));   //1即第二列,指内容
                user.setPhone(result.getString(2));  //2即第三列,指时间
                list.add(user);
            }result.close();
        }return list;
    }

    public User get(String name) {
        User user=new User();
        Cursor result=db.query("user",null,"name=?",new String[]{name},
                null,null,null,null);
        if (result.getCount()==1){
            result.moveToFirst();
            user.setName(result.getString(1));
            user.setPhone(result.getString(2));
            return user;
        }else {
            user.setName(null);
            user.setPhone(null);
            return user;
        }
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

User.java

package com.example.myapplication;

public class User {
    private String id;
    private String name;
    private String phone;
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/tv_title"
        android:gravity="center"
        android:textSize="25dp"
        android:textColor="@color/B_group_1"
        android:background="@color/B_group_3"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="通讯录" />

    <ListView
        android:id="@+id/lv_show"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/tv_title"
        android:background="@color/B_group_4"
        android:textColor="@color/B_group_1"></ListView>
    <ImageView
        android:id="@+id/iv_add"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/add"
        android:layout_margin="20dp"
        android:layout_width="50dp"
        android:layout_height="50dp">
    </ImageView>
</RelativeLayout>

dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:paddingTop="20dp"
    android:paddingLeft="40dp"
    android:paddingRight="40dp"
    android:paddingBottom="20dp"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/tv_name"
        android:text="姓名"
        android:textSize="20dp"
        android:textColor="@color/B_group_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></TextView>
    <EditText
        android:id="@+id/et_name"
        android:hint="请输入姓名"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></EditText>
    <TextView
        android:id="@+id/tv_pwd"
        android:text="电话"
        android:textSize="20dp"
        android:textColor="@color/B_group_1"
        android:layout_marginTop="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></TextView>
    <EditText
        android:id="@+id/et_pwd"
        android:hint="请输入电话"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></EditText>
</LinearLayout>

 item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:padding="10dp"
    android:orientation="horizontal"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/tv_showName"
        android:textColor="@color/B_group_1"
        android:text="测试信息"
        android:layout_weight="1"
        android:textSize="20dp"
        android:layout_width="0dp"
        android:layout_height="wrap_content">
    </TextView>
    <TextView
        android:id="@+id/tv_showPhone"
        android:text="1234566"
        android:layout_weight="2"
        android:inputType="number"
        android:layout_width="0dp"
        android:layout_height="wrap_content">
    </TextView>

</LinearLayout>

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="purple_200">#FFBB86FC</color>
    <color name="purple_500">#FF6200EE</color>
    <color name="purple_700">#FF3700B3</color>
    <color name="teal_200">#FF03DAC5</color>
    <color name="teal_700">#FF018786</color>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>

    <color name="B_group_1">#0B132B</color>
    <color name="B_group_2">#A49DBE</color>
    <color name="B_group_3">#D5CFE1</color>
    <color name="B_group_4">#E9E7EF</color>
    <color name="B_group_5">#D8C4C4</color>
</resources>

 详细见:https://gitee.com/love1213/Android-Studio-Contacts.git文章来源地址https://www.toymoban.com/news/detail-503586.html

到了这里,关于Android Studio 简易通讯录制作 (Java)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于java的Android手机通讯录【详细】【完整代码】

    提示:代码在基本模块中,教程纯文字,推荐两个屏幕一边看代码一边看教程 简易Android通讯录系统,只要半天就能写完! (博主安卓一些功能用的不熟练) 需要掌握学习的知识点: 1、基本的UI界面编写。 2、Intent的基本使用。 3、Menu的基本使用。 4、RecyclerView的基本使用。

    2024年02月09日
    浏览(31)
  • Android手机通讯录(上)

    可以实现添加联系人,删除联系人,修改联系人,查找号码,查询联系人信息等功能。 具体实现界面如图所示。 相关代码介绍如下: Android项目配置AndroidManifest.xml 手机通讯录程序主界面类MyContactsActivity.java 手机通讯录程序数据库类MyDB.java 手机通讯录程序添加、编辑、查看信

    2024年02月12日
    浏览(40)
  • 基于Android的手机通讯录设计

    目 录 1.系统描述 1 1.1 问题描述 1 1.2 功能描述 1 1.3 数据需求 2 1.4 设计意义 2 2.背景介绍 2 2.1 Android系统概述 2 2.2 Android开发组件 4 2.2.1 Activity组件 4 2.2.2 Service 组件 7 2.2.3 BroadcastReceiver 组件 8 2.2.4 Content Provider 组件 8 2.3 Android数据库 9 2.3.1 SQLite数据库 9 2.3.2 SQLite数据库特点 10

    2024年02月09日
    浏览(66)
  • Android 获取手机通讯录联系人信息

    近日在项目开发过程中发现,华为手机HarmonyOS 3.0系统,设置隐私 里面可以查看各个应用访问隐私权限的次数,发现应用程序访问手机通讯录的次数异常的高,针对访问通讯录频次高的问题做了研究和优化 问题分析: 分析代码发现只要通过ContentProvider 访问通讯录一次,统计

    2024年02月12日
    浏览(33)
  • Java实现通讯录

    前言:通讯录非常适合前期需要练习语法的小伙伴,效果非常好。 水再浑浊,只要长久沉淀,依然会分外清澈。 人再愚钝,只要足够努力,一样能改写命运。 此通讯录的功能包括: 1.删除联系人 2.增加联系人 3.展示已有联系人 4.查找联系人 5.排序联系人 6.退出通讯录 联系人

    2024年02月11日
    浏览(42)
  • Flutter Android & IOS 获取通讯录联系人列表

    1.在 pubspec.yaml 文件中添加 contacts_service 和 permission_handler 插件的依赖: 2.在你的 Dart 代码中,导入 contacts_service 插件: 3.权限请求: Android 需要在 android/app/src/main/AndroidManifest.xml 文件中添加以下内容: IOS 需要在 ios/Runner/Info.plist 文件中添加以下内容: 在ios系统上如果进行

    2024年02月08日
    浏览(40)
  • Java程序-个人通讯录管理

    摘 要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须经常与亲戚、朋友、同学、同事和其它一些人保持联系。因此,为了能够快速查找到联系人的信息,节省查找时间,可以创建一个个人通讯录管理系统。 通过编写并调试一个Java应用软件,连接

    2024年01月16日
    浏览(23)
  • 简单通讯录管理系统(Java)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档     任务 : 在之前的练习任务中,我们已经实现了通讯录的增删改查等基本功能,主要实现一个通讯录的菜单管理功能。 仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现通讯录菜单管

    2024年02月09日
    浏览(43)
  • AndroidStudio课程设计-通讯录系统(高分毕设,Android期末作业,Android课设,AndroidStudio)

    博主介绍: 本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮

    2024年02月04日
    浏览(42)
  • Android之抓取短信,所有应用信息,通讯录,通话记录,手机系统相册图片

    一般我们做金融APP会遇到风控需求,需要获取用户手机短信,手机所有安装应用信息,通讯录,通话记录等功能,接下来我们看看怎么做,一篇文章解决所有! 这里我只需要这些字段,需要更多自己添加 1.kotlin 2.java 1.kotlin 2.Java 1.kotlin 2.Java 这篇文章比较长,懒得分开成几篇

    2024年02月16日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包