手机联系人添加、查看

1.利用SQLiteOpenHelper对象创建DatabaseHelper类,从而创建联系人的数据库。

1)声明一个静态的最终的对象DATABASENAME="csdn.db"作为数据库csdn,声明一个静态整型dataBaseVersion;

private static final String DATABASENAME="csdn.db";
	private static int dataBaseVersion=1;
public DatabaseHelper(Context context){
		super(context,DATABASENAME,null,dataBaseVersion);
	}
<span style="font-size:18px;">注意:</span>每一次使用onUpgrade()方法进行版本升级的时候dataBaseVersion都要加上1。

2)在onCreate()方法中利用execSQL()方式创建联系人的数据库表

@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table users(userid integer primary key autoincrement,username varchar(20),userage integer,usersalary double,userphone varchar(12))");
	}

3)如果需要改动数据库列表,升级数据库版本时调用onUpgrade()方法

@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		System.out.println("----------升级了........");
	}

2.联系人的增删改查:

注意:创建、升级数据库,添加、修改、删除数据库中的内容使用execSQL()方法,而查找数据库中的数据对象则使用rawQuery()方法。

// 依赖的对象
	private DatabaseHelper databaseHelper;

	// 通过构造器实例化
	public UserDaoImpl(DatabaseHelper databaseHelper) {
		this.databaseHelper = databaseHelper;
	}

	@Override
	public boolean insert(Users entity) {
		try {
			// 得到数据库的操作对象
			SQLiteDatabase db = databaseHelper.getWritableDatabase();
			// db.execSQL("insert into users(username,userage,usersalary)values('"+entity.getUaerName()+"',"+entity.getUserAge()+","+entity.getUserSalary()+")");
			db.execSQL(
					"insert into users(username,userage,usersalary,userphone)values(?,?,?,?)",
					new Object[] { entity.getUserName(), entity.getUserAge(),
							entity.getUserSalary(),entity.getUserPhone()});
			db.close();

		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	@Override
	public boolean update(Users entity) {
		try {
			// 得到数据库的操作对象
			SQLiteDatabase db = databaseHelper.getWritableDatabase();
			db.execSQL(
					"update users set username=?,userage=?,usersalary=?,userphone=? where userId=?",
					new Object[] { entity.getUserName(), entity.getUserAge(),
							entity.getUserSalary(),entity.getUserPhone(), entity.getUserId() });
			db.close();

		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	@Override
	public boolean delete(Users entity) {
		return deleteById(entity.getUserId());
	}

	@Override
	public boolean deleteById(Integer id) {
		try {
			// 得到数据库的操作对象
			SQLiteDatabase db = databaseHelper.getWritableDatabase();
			db.execSQL("delete from users where userId=?", new Object[] { id });
			db.close();

		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	@Override
	public Users findById(Integer id) {
		Users entity = null;
		SQLiteDatabase db = databaseHelper.getWritableDatabase();
		Cursor c = db.rawQuery(
				"select userid,username,userage,usersalary,userphone from users where userid=? ",
				new String[] { id + "" });
		if (c.moveToNext()) {
			entity = new Users();
			entity.setUserId(c.getInt(c.getColumnIndex("userid")));
			entity.setUserName(c.getString(c.getColumnIndex("username")));
			entity.setUserAge((c.getInt(c.getColumnIndex("userage"))));
			entity.setUserSalary(c.getDouble(c.getColumnIndex("usersalary")));
			entity.setUserPhone(c.getString(c.getColumnIndex("userphone")));
		}
		db.close();
		return entity;
	}

	@Override
	public List<Users> findAll() {
		List<Users> entities = new ArrayList<>();
		SQLiteDatabase db = databaseHelper.getWritableDatabase();
		Cursor c = db.rawQuery(
				"select userid,username,userage,usersalary,userphone from users",
				null);
		while (c.moveToNext()) {
			Users entity = new Users();
			entity.setUserId(c.getInt(c.getColumnIndex("userid")));
			entity.setUserName(c.getString(c.getColumnIndex("username")));
			entity.setUserAge((c.getInt(c.getColumnIndex("userage"))));
			entity.setUserSalary(c.getDouble(c.getColumnIndex("usersalary")));
			entity.setUserPhone(c.getString(c.getColumnIndex("userphone")));
			entities.add(entity);
		}
		db.close();
		return entities;
	}

3.获取联系人的信息到界面上

1)界面的搭建

利用ListView插件进行显示数据。

2)将联系人的信息获取到界面上的步骤:

①声明获取显示的控件

②从数据库中获取要显示的数据

③创建自定义的adapter对象,将adapter对象作为控制层

④利用继承BaseAdapter对象创建MyAdapter为创建自定义的adapter对象做准备

⑤理解MyAdapter中的方法并进行相关实现,getCount()方法返回总条目的数量;getItem()返回当前条目对应的对象;getView()方法返回每个条目

⑥对于getView()方法返回每个条目的实现。其中一半有三种方式:

一种是:实现单选的效果

private View SingleChoice(int position) {
			// 获取当前位置现实的对象
			Users entity = entities.get(position);
			// 创建出每个条目显示的控件对象
			// TextView tv=new TextView(MainActivity.this);
			View v = View.inflate(MainActivity.this,
					android.R.layout.simple_list_item_single_choice, null);
			CheckedTextView tv = (CheckedTextView) v
					.findViewById(android.R.id.text1);

			tv.setText(entity.getUserName() + "-" + entity.getUserPhone());
			tv.setHeight(40);

			return tv;
		}

一种是:实现多选的效果

private View MultipleChoice(int position) {
			// 获取当前位置现实的对象
			Users entity = entities.get(position);
			// 创建出每个条目显示的控件对象
			// TextView tv=new TextView(MainActivity.this);
			View v = View.inflate(MainActivity.this,
					android.R.layout.simple_list_item_multiple_choice, null);
			CheckedTextView tv = (CheckedTextView) v
					.findViewById(android.R.id.text1);

			tv.setText(entity.getUserName() + "-" + entity.getUserPhone());
			tv.setHeight(40);

			return tv;
		}

一种是:自定义的方法的效果

private View DefinedChoice(int position) {
			// 获取当前条目的位置
			Users entity = entities.get(position);
			// View中inflate方法
			View v = View.inflate(MainActivity.this, R.layout.list_item_users,null);
			//获取v对象的控件
			TextView tv_id = (TextView) v.findViewById(R.id.tv_id);
			TextView tv_name = (TextView) v.findViewById(R.id.tv_name);
			TextView tv_age = (TextView) v.findViewById(R.id.tv_age);
			TextView tv_phone = (TextView) v.findViewById(R.id.tv_phone);
			// 给控件设置
			tv_id.setText("" + entity.getUserId());
			tv_name.setText("姓名:" + entity.getUserName());
			tv_age.setText("年龄:" + entity.getUserAge());
			tv_phone.setText("电话:" + entity.getUserPhone());
			return v;
		}

手机联系人添加、查看

时间: 2024-11-08 23:41:23

手机联系人添加、查看的相关文章

Android 读取手机联系人、拨号、发送短信及长按菜单的操作

本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要用ListView列表控件展示手机联系人 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/a

Android_08手机联系人编码中SimpleAdapter的使用说明

1. SimpleAdapter  adapter = new SimpleAdapter(this, list1,R.layout.my_layout, new String[] { "name", "keyvalue" },new int[] { R.id.tv_name, R.id.tv_info }); lv_search.setAdapter(adapter); 解释: 一)this:(1).当存放在自己的class中并且被自己调用时,就用this:而且这

关于手机联系人的改进想法

红朝儒生 2014-5-12 关键字:手机 联系人 简介:提出一些手机联系人的改进意见. 手机都要有联系人.吾用联系人软件,总是感到各种不爽. 显示. 联系人都是列表式显示.这样一屏幕显示的内容其实很少.而人眼(大脑)的过滤能力是很强的,所以这种方式,并不利于察看. 在列表中增加显示信息,比如关系,地点,业务,备注等. 头像式.这样一屏幕可以显示更多. 查找. 现在查找的缺点有:搜索以人名为主,同一界面没有分类(如地点,关系,业务等). 改进想法:头像式排列(这样可以显示更多人,人眼可以直接找到

[小项目] 获取手机联系人并且向服务器发送JSON数据

[小项目] 获取手机联系人并且向服务器发送JSON数据 好久没有写文档了...最近忙着带班,也没有时间学习新东西,今天刚好有个小Demo,就写了一下,顺便丰富一下我的博客吧! 首先说一下需求: 简单的说,就是一个程序,会获取手机的联系人列表,然后转换成JSON字符串数组,向指定服务器中发送数据...总感觉有侵犯别人隐私权的意味; 注:仅供学习使用,不要做违法的事情哟 这个程序我写的有点有条理,首先有几个工具类: 1. 判断是否联网的工具类(NetUtils) 2. 从手机中获取所有联系人的工具类

获取手机联系人的信息

使用ContentResolver获取手机联系人的办法,建议使用第二种 1.一般下面的方法查询的是视图的表,表的字段需要查询获取,比较麻烦,可能会经常出错(特别在真机调试的时候) // TODO 这种方法直接指定uri在真机中是获取不到联系人信息的 // [1]获取到内容解析者 // ContentResolver contentResolver = getContentResolver(); /*Cursor cursor = contentResolver.query(Uri .parse(

获取手机联系人,并通过拼音字母快速查询

获取手机联系人,并通过拼音字母快速查询. 通过工具类转换联系人首字的首字母,并排序显示. 通过画布的方式在布局右侧添加快速查询的字母布局 显示效果如下图: 右侧点击[★]时回到顶部: 滑动到[N]时N开头的联系人置顶 代码: 通过画布的方式在布局右侧添加快速查询的字母布局 http://download.csdn.net/detail/zengchao2013/8750259 欢迎指正~ 通过画布的方式在布局右侧添加快速查询的字母布局

宿主手机联系人、通话记录、短信工具类(不断完善中。。。)

对于系统手机的联系人.短信.通话记录的一些列的方法,着实需要总结下了 我公司最近在做跟这相关的项目,这个博客后续会完善这3个模块的工具类方法 1.查询contacts表获取contactId, 通过contact_id去获取data表中相应的数据 /** * 通过contactId从data表中获取联系人信息 Uri uri = * Uri.parse("content://com.android.contacts/contacts/#/data"); * 查询contacts表获取c

由手机联系人联想到的DNS域名

昨天下午趁着有空就回顾了上个月学的Windows2008 R2 Server的全部课程,从用户组到IIS+PHP+MYSQL+PhpMyadmin的搭建. 在我看到在Windows上搭建DNS服务器它的域名讲解时,突然想到手机中的联系人,突然发现二者之间的原理如此相似.在此我分享下基于手机联系人的DNS新解,希望大家看后能对DNS有一些新的认识. 简要将行文结构分为三块:固话,移动,互联. 固话 最开始我们使用家用固话时,由于常联系的人就那么多一般情况下我们都把他们的电话号码都记在大脑里,或者记

手机联系人误删怎样恢复?下面的方法告诉你

我们现在虽然很多的人都喜欢使用我们的社交软件去进行交流,像是我们的微信.QQ.ins--这类的社交软件, 那么我们是不是真的用不到我们的手机联系人了呢?其实不是的,像是我们有的时候,会选择使用我们的手机联系人的,像是我们与客户联系的时候,我们还是会选择使用我们的手机联系人的,那么若是手机联系人删除了我们该怎么办呢?下面我们就一起看看吧! 首先我们很多的人误删过我们的联系人之后,第一时间想到的肯定都是备份,所以,我们可以选择找到我们手机上的备份和还原: 然后找到我们的手机联系人,然后点击开始恢复就