手机联系人添加、查看

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;
		}



 

手机联系人添加、查看,布布扣,bubuko.com

手机联系人添加、查看

上一篇:以Settings.APPLICATION_DEVELOPMENT_SETTINGS打开开发者面板出错总结


下一篇:Android多点触控(图片的缩放Demo)