模拟手机通讯录联系人功能

实训:模拟手机通讯录联系人功能
   
   
  1. package com.qf.day43_02;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.content.DialogInterface;
  5. import android.content.DialogInterface.OnClickListener;
  6. import android.content.Intent;
  7. import android.database.Cursor;
  8. import android.net.Uri;
  9. import android.os.Bundle;
  10. import android.view.Menu;
  11. import android.view.MenuItem;
  12. import android.view.View;
  13. import android.widget.AdapterView;
  14. import android.widget.AdapterView.OnItemClickListener;
  15. import android.widget.AdapterView.OnItemLongClickListener;
  16. import android.widget.ListView;
  17. import android.widget.SimpleCursorAdapter;
  18. import com.qf.day43_02.db.DBService;
  19. public class MainActivity extends Activity {
  20. private ListView lv;
  21. private DBService dbService;
  22. private Cursor c;
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27. lv = (ListView) findViewById(R.id.lv1);
  28. dbService = new DBService(this);
  29. lv.setOnItemClickListener(new OnItemClickListener() {
  30. @Override
  31. public void onItemClick(AdapterView<?> parent, View view,
  32. int position, long id) {
  33. long phonenum = 0 ;
  34. Intent intent = new Intent();
  35. intent.setAction(Intent.ACTION_DIAL);
  36. if (c.moveToPosition(position)) {
  37. phonenum = c.getLong(2);
  38. }
  39. intent.setData(Uri.parse("tel:"+phonenum));
  40. startActivity(intent);
  41. }
  42. });
  43. lv.setOnItemLongClickListener(new OnItemLongClickListener() {
  44. @Override
  45. public boolean onItemLongClick(AdapterView<?> parent, View view,
  46. final int position, long id) {
  47. // TODO Auto-generated method stub
  48. AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
  49. builder.setIcon(R.drawable.ic_launcher);
  50. builder.setTitle("请选择你的操作");
  51. builder.setItems(new String[]{"编辑联系人","删除联系人"}, new OnClickListener() {
  52. @Override
  53. public void onClick(DialogInterface dialog, int which) {
  54. // TODO Auto-generated method stub
  55. final Intent intent = new Intent(MainActivity.this,EditActivity.class);
  56. switch (which) {
  57. case 0:
  58. if (c.moveToPosition(position)) {
  59. int id = c.getInt(0);
  60. String name = c.getString(1);
  61. long phonenun = c.getLong(2);
  62. intent.putExtra("id", id);
  63. intent.putExtra("name", name);
  64. intent.putExtra("phonenum", phonenun);
  65. intent.putExtra("isAdd", false);
  66. startActivity(intent);
  67. }
  68. break;
  69. case 1:
  70. AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);
  71. builder2.setIcon(R.drawable.ic_launcher);
  72. builder2.setTitle("提示");
  73. builder2.setMessage("您确定要删除此联系人吗?");
  74. builder2.setNegativeButton("取消", null);
  75. builder2.setPositiveButton("确定", new OnClickListener() {
  76. @Override
  77. public void onClick(DialogInterface dialog, int which) {
  78. // TODO Auto-generated method stub
  79. if (c.moveToPosition(position)) {
  80. int id = c.getInt(0);
  81. dbService.delete(id);
  82. setListAdapter();
  83. }
  84. }
  85. });
  86. builder2.show();
  87. break;
  88. }
  89. }
  90. });
  91. builder.show();
  92. return false;
  93. }
  94. });
  95. }
  96. @Override
  97. protected void onResume() {
  98. // TODO Auto-generated method stub
  99. super.onResume();
  100. setListAdapter();
  101. }
  102. private void setListAdapter() {
  103. c = dbService.getInfo();
  104. SimpleCursorAdapter adapter = new SimpleCursorAdapter(MainActivity.this, R.layout.lv, c, new String[]{"name","phonenum"}, new int[]{R.id.name,R.id.phonenum}, SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
  105. lv.setAdapter(adapter);
  106. }
  107. @Override
  108. public boolean onCreateOptionsMenu(Menu menu) {
  109. // TODO Auto-generated method stub
  110. getMenuInflater().inflate(R.menu.main, menu);
  111. return super.onCreateOptionsMenu(menu);
  112. }
  113. @Override
  114. public boolean onMenuItemSelected(int featureId, MenuItem item) {
  115. // TODO Auto-generated method stub
  116. switch (item.getItemId()) {
  117. case R.id.addUser:
  118. Intent intent = new Intent(MainActivity.this,EditActivity.class);
  119. intent.putExtra("isAdd", true);
  120. startActivity(intent);
  121. break;
  122. }
  123. return super.onMenuItemSelected(featureId, item);
  124. }
  125. }
    
    
  1. package com.qf.day43_02;
  2. import com.qf.day43_02.db.DBService;
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.widget.EditText;
  8. public class EditActivity extends Activity {
  9. private EditText et1,et2;
  10. private boolean isAdd;
  11. private DBService dbService;
  12. private int id;
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_edit);
  17. et1 = (EditText) findViewById(R.id.et1);
  18. et2 = (EditText) findViewById(R.id.et2);
  19. dbService = new DBService(this);
  20. Intent intent = getIntent();
  21. isAdd = intent.getBooleanExtra("isAdd", true);
  22. if (isAdd) {
  23. setTitle("添加联系人");
  24. }else {
  25. String name = intent.getStringExtra("name");
  26. long phonenum = intent.getLongExtra("phonenum", 0);
  27. et1.setText(name);
  28. et2.setText(phonenum+"");
  29. id = intent.getIntExtra("id", 0);
  30. setTitle("更改联系人");
  31. }
  32. }
  33. public void submit(View v){
  34. String name = et1.getText().toString().trim();
  35. String phonenum = et2.getText().toString().trim();
  36. if (isAdd) {
  37. dbService.insert(name,phonenum);
  38. }else {
  39. dbService.update(id, name, phonenum);
  40. }
  41. finish();
  42. }
  43. }
     
     
  1. package com.qf.day43_02.db;
  2. import android.content.Context;
  3. import android.database.sqlite.SQLiteDatabase;
  4. import android.database.sqlite.SQLiteOpenHelper;
  5. public class DBOpenHelper extends SQLiteOpenHelper{
  6. /**
  7. * 初始数据库的必要参数
  8. * @param context 上下文对象
  9. * @param name 数据库名
  10. * @param factory 游标工厂 null
  11. * @param version 版本信息
  12. */
  13. public DBOpenHelper(Context context) {
  14. super(context, "calllist", null, 1);
  15. // TODO Auto-generated constructor stub
  16. }
  17. /**
  18. * 创建数据库的时候会执行 创建初始的数据表
  19. * 第一次创建数据库的时候会调用
  20. */
  21. @Override
  22. public void onCreate(SQLiteDatabase db) {
  23. // TODO Auto-generated method stub
  24. db.execSQL("create table if not exists numlist(_id integer primary key autoincrement,name text,phonenum long)");
  25. db.execSQL("insert into numlist(name,phonenum) values('张三',153110120)");
  26. db.execSQL("insert into numlist(name,phonenum) values('张三1',153110121)");
  27. db.execSQL("insert into numlist(name,phonenum) values('张三2',153110122)");
  28. }
  29. /**
  30. * 更新数据库
  31. * 如果数据库的版本号发生变化,系统会执行此方法
  32. *
  33. */
  34. @Override
  35. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  36. // TODO Auto-generated method stub
  37. }
  38. }
      
      
  1. package com.qf.day43_02.db;
  2. import android.content.ContentValues;
  3. import android.content.Context;
  4. import android.database.Cursor;
  5. import android.database.sqlite.SQLiteDatabase;
  6. public class DBService {
  7. private Context context;
  8. private DBOpenHelper dbOpenHelper;
  9. public DBService(Context context) {
  10. super();
  11. this.context = context;
  12. dbOpenHelper = new DBOpenHelper(context);
  13. }
  14. public Cursor getInfo(){
  15. SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
  16. Cursor cursor = db.rawQuery("select * from numlist",null);
  17. return cursor;
  18. }
  19. public void insert(String name, String phonenum) {
  20. SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  21. ContentValues values = new ContentValues();
  22. values.put("name", name);
  23. values.put("phonenum", Long.valueOf(phonenum));
  24. db.insert("numlist", null, values);
  25. }
  26. public void update(int id,String name, String phonenum) {
  27. SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  28. ContentValues values = new ContentValues();
  29. values.put("name", name);
  30. values.put("phonenum", Long.valueOf(phonenum));
  31. db.update("numlist", values, "_id="+id, null);
  32. }
  33. public void delete(int id) {
  34. // TODO Auto-generated method stub
  35. SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  36. db.delete("numlist", "_id="+id, null);
  37. }
  38. }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值