android简易的通讯录代码  主要用到了 数据库存储的知识点  还有menu

package com.example.song.lx_day13_contact;import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CursorAdapter;
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 {private ListView listView;private TextView empty;private SQLiteDatabase db;private Cursor cursor;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();//设置空视图listView.setEmptyView(empty);registerForContextMenu(listView);initDataBase();initData();//listview赋值}private void initData() {cursor = db.rawQuery("select * from contact", null);SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, new String[]{ "name", "sex", "number"}, new int[]{ R.id.tv_name, R.id.tv_sex, R.id.tv_phoneNumber}, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);listView.setAdapter(adapter);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);//true 带自己创建菜单return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.mipmap.icon);builder.setTitle("添加联系人");View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog_view, null);builder.setView(view);final EditText nameEditText = (EditText) view.findViewById(R.id.et_name);final EditText sexEditText = (EditText) view.findViewById(R.id.et_sex);final EditText phoneEditText = (EditText) view.findViewById(R.id.et_phone);builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {ContentValues values = new ContentValues();values.put("name", nameEditText.getText() + "");values.put("sex", sexEditText.getText() + "");values.put("number", phoneEditText.getText() + "");long insert = db.insert("contact", null, values);if (insert != -1) {//判断是否添加上联系人initData();//跟新一下数据Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();}}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.show();return super.onOptionsItemSelected(item);}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);getMenuInflater().inflate(R.menu.contextmenu_listview_main, menu);AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
//        menu.setHeaderTitle("id:" + info.id);}@Overridepublic boolean onContextItemSelected(MenuItem item) {AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();final long id = info.id;//单条对应的数据库switch (item.getItemId()) {case R.id.action_delete:db.execSQL("delete from contact where _id =?", new Object[]{id});initData();break;case R.id.action_update:AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("更新联系人");builder.setIcon(R.mipmap.icon);View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog_view, null);builder.setView(view);final EditText nameEditText = (EditText) view.findViewById(R.id.et_name);final EditText sexEditText = (EditText) view.findViewById(R.id.et_sex);final EditText phoneEditText = (EditText) view.findViewById(R.id.et_phone);Cursor cursor = db.rawQuery("select * from contact where _id = ?", new String[]{"" + id});cursor.moveToFirst();nameEditText.setText(cursor.getString(cursor.getColumnIndex("name")));sexEditText.setText(cursor.getString(cursor.getColumnIndex("sex")));phoneEditText.setText(cursor.getString(cursor.getColumnIndex("number")));builder.setPositiveButton("修改", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {ContentValues contentValues = new ContentValues();contentValues.put("name", nameEditText.getText()+"");contentValues.put("sex", sexEditText.getText()+"");contentValues.put("number", phoneEditText.getText()+"");db.update("contact", contentValues, "_id=?", new String []{id+""});initData();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.show();break;}return super.onContextItemSelected(item);}private void initDataBase() {OpenHelper helper = new OpenHelper(this);db = helper.getReadableDatabase();}private void initView() {listView = ((ListView) findViewById(R.id.lv));empty = ((TextView) findViewById(R.id.tv_empty));}
}
package com.example.song.lx_day13_contact;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;/*** Created by song on 2017/1/18.*/public class OpenHelper extends SQLiteOpenHelper {public static final String NAME = "contacts.db";public static final int VERSION = 1;public OpenHelper(Context context) {super(context, NAME, null, VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table if not exists contact(_id integer primary key autoincrement,name,sex,number)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {if (newVersion > oldVersion) {db.execSQL("drop table if exists contact");onCreate(db);}}
}

如果以上代码你没有理解可以在下面的百度云里下载全部代码和布局

点击打开链接

提取码: yt79

android联系人的简易通讯录相关推荐

  1. android adb 联系人,使用adb命令向Android模拟器中导入通讯录联系人的方法

    本文实例讲述了使用adb命令向Android模拟器中导入通讯录联系人的方法.分享给大家供大家参考.具体实现方法如下: 使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. ...

  2. 手机通讯录java首字母排序,Android联系人按拼音排序以及按汉字首字母或全拼搜索...

    今天用了整整一下午去捣鼓这块,为什么模拟器上可以按拼音排序,中英文混排,及按字母搜索联系人,但到了开发板(平台是根据android2.2改过的)上就怎么不行了呢,虽然现在还没有解决,但也是知道了问题所 ...

  3. android 联系人的收藏,Android QQ通讯录4.2:自动收藏联系人

    [IT168厂商动态]近日,携带"重磅炸弹"的Android版QQ通讯录4.2全新推出!新版增加全球最快的联系人查找功能,通过"超级搜索"功能0秒钟快速准确定位 ...

  4. android 设置联系人头像代码,android如何取得本地通讯录的头像的原图的实现代码...

    本文介绍了android如何取得本地通讯录的头像的原图的实现代码,分享给大家,也给自己留个笔记 如果想通讯录进入详情页,那么最重要的参数就是contactId,这个是联系人的唯一标识 getListV ...

  5. Android 获取通讯录联系人,打开通讯录获取联系人信息;整个流程封装在基类中;

    打开原生通讯录获取联系人姓名和手机号 1.获取通讯录权限: <!--访问通讯录--><uses-permission android:name="android.permi ...

  6. c语言通讯录打电话,C语言实现简易通讯录 | 术与道的分享

    #include #include #include #include #include #pragma warning (disable:4996) enum Contact //枚举变量 { Qu ...

  7. C++实现简易通讯录

    功能和效果图 功能 通讯录实现联系人查找,添加联系人,删除联系人,联系人信息修改 效果图 实现代码 创建结构体 typedef struct News {string name; //姓名string ...

  8. C语言实现简易通讯录

    实现一个通讯录: 通讯录可以用来存储联系人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1.添加联系人信息 2.删除指定联系人信息 3.查找指定联系人信息 4.修改指定联系人信 ...

  9. android contacts电话查询头像,android怎么取得本地通讯录的头像的原图

    android怎么取得本地通讯录的头像的原图 发布时间:2021-02-10 19:25:16 来源:亿速云 阅读:103 作者:小新 这篇文章将为大家详细讲解有关android怎么取得本地通讯录的头 ...

最新文章

  1. 自回归模型PixelCNN 的盲点限制以及如何修复
  2. eclipse格式化代码
  3. post和get的区别?
  4. SpringCloud微服务实战(四)-微服务中的服务拆分
  5. Apache服务器部署ASP.NET网站
  6. hadoop等的下载地址
  7. 华为云占用443端口_关于XAMPP默认端口80和443被占用的问题
  8. 42 WM配置-作业-库存盘点-定义默认设置
  9. 项目微管理17 - 双赢
  10. 【solr基础教程之中的一个】Solr相关知识点串讲
  11. InstallShield 2020中文版
  12. 测试环境由谁搭建?第三方软件测试环境搭建步骤流程
  13. 阿里云国际版云服务器Linux和Windows操作系统的链路测试工具-Unirech
  14. lempel ziv matlab,精讲Lempel-Ziv压缩算法
  15. 由 Apache Kylin 组建的 Kyligence 公司获得数百万美元的天使轮投资
  16. 《RO 仙境传说》NFT 推出
  17. [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  18. Fourier分析入门——第1章——数学预备知识
  19. 小米手环6 获取amaztools key(windows版)
  20. 王者荣耀头像大小怎么调?调整图片尺寸大小工具分享

热门文章

  1. PS 父图层与子图层
  2. 抖音矩阵系统源码定制。look here
  3. 解决Caused by: java.lang.NoClassDefFoundError: com/aliyun/oss/internal/OSSUdfOperation
  4. 弋阳一中2021高考成绩查询,凝心聚力 干在实处——弋阳一中成功召开2020-2021学年度上学期期末总结大会...
  5. css-doodle学习教程
  6. 臭氧味道虽“臭”,架不住它功能强大
  7. android抗锯齿的几个方法
  8. 安卓系统能运行 linux,重磅!安卓系统竟能运行PC软件,实测效果令人惊在当场!...
  9. Mac下面visio的替代品Omnigraffle,很好用
  10. mysql+distinct+max_MySQL 中 distinct 和 group by 性能比较-Fun言