`
chenliang1234576
  • 浏览: 196007 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android项目--超级简单的android通讯录

阅读更多

哥最近做了一个小项目《铁哥们通讯录》,作为练手项目给大家分享一下。

功能也很简单,一个主界面,然后在主界面弹出一个添加界面,一个信息列表。

其中只用到了1个activity,1个sqlite帮助类。

下面是activity类

   




 
 
 
 

 

package com.feelling.ui;
 
import java.util.ArrayList; 
 
import com.woz.util.Config;
import com.woz.util.DataBaseHelper;
 
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener; 
import android.widget.Button;
import android.widget.EditText; 


/**** 
 * @production  铁哥们通讯录
 * @company     android技术帮--【技术成就梦想】
 * @department  群号:85506951
 * @author      良仔(qq:953486326)
 * {@docRoot    通讯录的启动初始化界面 }
 * @version     1.0
 * @since       2011\9\21
 * @see         欢迎对android感兴趣的童鞋加入android技术帮,共同学习,共同进步!
 * ****/

public class MainActivity extends ProDialogImp {
    /** Called when the activity is first created. */
	//---------- main ----------------
	Button addButton,queryButton;  // 按钮-添加,查询
	//---------- add user ----------------  
	EditText username,phone; 
	String   userStr,phoneStr;
	//----------- list user -----------------------
    
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
    	// main
    	addButton = (Button)findViewById(R.id.addUserBtn);
    	queryButton = (Button)findViewById(R.id.listUserBtn);  
    	
        // 添加
        addButton.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				  // 这里直接跳到添加的ui中去
				//  setContentView(R.layout.add_user); 
				 LayoutInflater inflater = getLayoutInflater();
				 View layout = inflater.inflate(R.layout.add_user, (ViewGroup)findViewById(R.id.dialog));
				 
				   // 内容元素
				   username = (EditText)layout.findViewById(R.id.userNameET);
			       phone = (EditText)layout.findViewById(R.id.phoneNumberET); 
				 new AlertDialog.Builder(MainActivity.this).setTitle("添加联系人").setView(layout)
			     .setPositiveButton("确定",  new DialogInterface.OnClickListener() { //添加事件
				     	public void onClick(DialogInterface dialog, int which) {
				     		  // 这里直接跳到添加的ui中去 
							  System.out.println(" on insert table user ---> ");   
							  DataBaseHelper dbHelper = new DataBaseHelper(MainActivity.this,Config.DB_NAME);
				              SQLiteDatabase sdb = dbHelper.getWritableDatabase();
				             
				              // put value 
				              userStr = username.getText().toString();
				              phoneStr = phone.getText().toString();
				              if(userStr!=null&&phoneStr!=null){
				            	   ContentValues cv = new ContentValues();
				                   // cv.put("id", 1);
				                   cv.put("title", userStr);
				                   cv.put("content", phoneStr);
				                   sdb.insert(Config.TABLE_NAME, null, cv); 
				                   showAlert("数据添加成功!");
				              }else{
				            	   showAlert("数据数据格式错误,请重新输入!");
				              } 
					  }}).setNegativeButton("取消", null).show();  
			        }
			});
       
        // 查询
        queryButton.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				 
				DataBaseHelper dbHelper = new DataBaseHelper(MainActivity.this,Config.DB_NAME);
		        SQLiteDatabase db = dbHelper.getReadableDatabase();
		        Cursor  cs = db.query(Config.TABLE_NAME, new String[]{"_id","title","content"}, null, null, null, null, null); 
		         
		        ArrayList<String> alist = new ArrayList<String>();
		        while(cs.moveToNext()){
	            	  int id = cs.getInt(cs.getColumnIndex("_id")); 
	            	  String name = cs.getString(cs.getColumnIndex("title"));
	            	  String con = cs.getString(cs.getColumnIndex("content"));
	            	  alist.add(id+"."+name+"["+con+"]"); 
	            	  System.out.println(" query [t_note]--> id = "+ id +" name = " + name +" con = " + con  );
	              } 
		          final    String[] contacts = new String[alist.size()]; 
		          for(int a=0;a<alist.size();a++){
		        	  contacts[a] = alist.get(a);
		          }
		             
		        new AlertDialog.Builder(MainActivity.this).setTitle("内容列表").setIcon(
						android.R.drawable.ic_dialog_info).setItems(   
						contacts, 
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog, int which) {
								//dialog.dismiss();
							   String 	artId = contacts[which].substring(0, 1);
							   alertDeleteOpt(artId);
							   //  showAlert("msg --> " + artId);
							}
						}) 
						.setNegativeButton("取消", null).show();
		        
		     /*   ListAdapter listapt = new SimpleCursorAdapter(MainActivity.this,
		        		    android.R.layout.simple_expandable_list_item_1,
		        		    cs,
		        		    new String[]{"title"},
		        		    new int[]{android.R.id.text1} );
		        
		        ListView  listUser = new ListView(MainActivity.this);  
		        listUser.setAdapter(listapt);
		        setContentView(listUser);  */
			}
        }); 
    }  
	// 删除数据
	public void deleteData(String id){
		  DataBaseHelper dbHelper = new DataBaseHelper(MainActivity.this,Config.DB_NAME);
		  SQLiteDatabase sdb = dbHelper.getWritableDatabase();
		  sdb.delete(Config.TABLE_NAME,  " _id=?", new String[]{id}); //删除数据 
	}
	 
	/**
	 *   删除操作
	 */
	public void alertDeleteOpt(final String id){  
		new AlertDialog.Builder(this)
		    .setCancelable(false)
		    .setMessage("您确定要删除这条信息吗?")
		    .setPositiveButton("确定", new DialogInterface.OnClickListener() {
		     	public void onClick(DialogInterface dialog, int which) {
		     	    deleteData(id);
			 }})
			 .setNegativeButton("取消", new DialogInterface.OnClickListener() {
			     	public void onClick(DialogInterface dialog, int which) {
						 dialog.cancel();
			 }})
			 .show(); 
	}  
	  //退出程序
	  @Override
		public boolean onKeyDown(int keyCode, KeyEvent event) { 
			 if (keyCode == KeyEvent.KEYCODE_BACK)// 返回按键 
			 {			 
				   new AlertDialog.Builder(this)
				    .setCancelable(false)
				    .setIcon(android.R.drawable.btn_star)
				    .setTitle("退出")
				    .setMessage("您确认要退出程序吗?")
				    .setPositiveButton("确定", new DialogInterface.OnClickListener() {
				     	public void onClick(DialogInterface dialog, int which) { 
				     		 MainActivity.this.finish();    //关闭程序的核心方法
					 }})
					 .setNegativeButton("取消", new DialogInterface.OnClickListener() {
					     	public void onClick(DialogInterface dialog, int which) {
								 dialog.cancel();
					 }})
					 .show();
			 }
			return true;
		}  
}
 
下面sqlite帮助类,其他的不太重要,所以就放到附件了,欢迎大家下载共同讨论学习。

package com.woz.util;     import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory;   /****  * @production  铁哥们通讯录  * @company     android技术帮--【技术成就梦想】  * @department  群号:85506951  * @author      良仔(qq:953486326)  * {@docRoot    访问sqlite数据的助手类  * 创建了一个note记录表  *  * _id,     主键  * title,  标题      * content,内容    }  * @version     1.0  * @since       2011\9\21  * @see         欢迎对android感兴趣的童鞋加入android技术帮,共同学习,共同进步!  * ****/ public class DataBaseHelper extends SQLiteOpenHelper {    public DataBaseHelper(Context context, String name, CursorFactory factory,    int version) {   super(context, name, factory, version);   // TODO Auto-generated constructor stub  }  public DataBaseHelper(Context context, String name,     int version) {   this(context, name, null, version);   // TODO Auto-generated constructor stub  }  public DataBaseHelper(Context context, String name) {   this(context, name, Config.VERSION);   // TODO Auto-generated constructor stub  }    @Override  public void onCreate(SQLiteDatabase db) {   // TODO Auto-generated method stub         System.out.println(" create table --> ");   // 执行创建         db.execSQL("create table "+ Config.TABLE_NAME +              "(_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT," +              "title varchar(100)," +              "content text)");    }

 @Override  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {   // TODO Auto-generated method stub         System.out.println(" up grade datebase --> ");         db.execSQL("drop table " + Config.TABLE_NAME);         db.execSQL("create table "+ Config.TABLE_NAME +              "(_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT," +              "title varchar(100)," +              "content text)");    } }

  • 大小: 19.7 KB
  • 大小: 21.4 KB
  • 大小: 18.3 KB
  • 大小: 16.3 KB
  • 大小: 25.3 KB
分享到:
评论
1 楼 chenliang1234576 2012-10-20  
非空判断bug修复
if((userStr!=null&&userStr.length() > 0)&&(phoneStr!= null && phoneStr.length() > 0)){

相关推荐

    Andorid项目源码(153套)

    android studio项目实例 android常用图片特效处理.zip android超炫的图片浏览器.zip Android仿美图秀秀和IOS系统的相机胶卷.zip Android创建UI的新思路:用javascript与Activity进行交互.zip Android模仿易网新闻...

    Android40个经典源码

    15 Android远程登录含有loading登录效果~~完整代码和超级详细注释 16 AsyncTask进度条加载网站数据到ListView 17 EditText插入QQ表情源码 18 OpenGL的一个简单的例子 19闹钟 20 指南针 21 重力感应 22 android 查询...

    超级同学通讯录

    - **跨平台**:作为一个实用工具,"超级同学通讯录"可能有Windows、Mac、iOS、Android等多个平台的版本,以适应不同用户的设备需求。 - **同步功能**:允许用户在不同设备间同步联系人信息,提升使用便利性。 6. ...

    仿iPhone通讯录效果的listview

    标题“仿iPhone通讯录效果的listview”和描述“超级仿iPhone通讯录效果,能够固定头部,并有动画效果”都指向了一个关键的技术点——Sticky Header。 Sticky Header是一种常见的UI设计,常用于展示分类数据,例如...

    Android可精简项目.pdf

    从文件内容中可以看出,这个Android系统项目包含了多种多样的APK文件,它们共同构成了完整的系统应用环境。每个APK文件都是一个应用程序或服务,它们之间相互协作,共同为用户提供各种服务和功能。这些知识能够帮助...

    超级数据查看器.新版本 v2.0 apk android手机软件

    新版本 v2.0 apk android手机软件 超级数据查看器是一个提供数据查询和数据管理的手机APP,能将excel文件里的数据,转换成手机系统可用的数据查询模块,做快速查询。 用户在导入特定数据进本系统后,教师和学生...

    超级好用的安卓源码

    2. **仿QQ列表通讯录项目**:这是一个实现类似QQ通讯录功能的项目,涉及到了ListView和Adapter的使用,以及数据结构的设计(可能包括SQLite数据库)。同时,可能还涵盖了搜索、排序和过滤功能的实现。 3. **仿微信...

    安卓手机数据恢复软件

    - **定义**: Root权限相当于安卓系统的超级管理员权限,拥有此权限后可以对系统进行更深层次的操作。 - **注意事项**: 开通Root权限可能会导致手机数据丢失或失去官方保修资格。需谨慎操作。 - **具体步骤**: - ...

    超级备份 Super Backup Pro 2.2.80 中文多语免费版.zip

    Android 上最快的数据备份工具!您可以将应用程序和联系人,短信和通话记录,书签和日历备份到 SD 卡/Gmail。您再也不会丢失数据!这是超级备份的免费无广告版本,如果您需要经常对手机系统中的重要数据进行备份,您...

    安卓手机sip电话客户端 Siphone

    1、支持sip直拨网络电话,手机需要能...2、呼叫方法超级简单,跟平时打电话的习惯是一样的,调用通讯录、或者通话记录、或者直接输入号码都可以。 3、两个dao99号码之间可以无限免费通话,跟qq、skype即时通讯一样。

    Android安卓系统自带软件详解(免费)

    ### Android安卓系统自带软件详解 在使用Android手机的过程中,用户可能会注意到系统中存在大量非自行安装的应用程序(APK)。这些应用通常被称为“预装应用”或“系统应用”。它们的存在有时会给用户带来困扰,...

    如何删除系统中的垃圾文件

    在Android手机的日常使用中,随着时间的推移,系统中会积累大量的垃圾文件,这些文件可能来自于卸载的应用残留、缓存数据、未使用的APK文件等,它们占用宝贵的存储空间,导致手机运行变慢。要有效地清理这些垃圾文件...

    安卓android系统自带程序卸载、删除方法.pdf

    Root权限是Android系统的超级用户权限,允许你访问和修改系统级别的文件。你可以通过下载和安装一键安全root软件来实现这一目标。运行该软件并按照指示获取临时或永久的root权限。需要注意的是,root操作可能使你的...

    JAVA上百实例源码以及开源项目源代码

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    临床全景诊疗信息系统项目参数.pdf

    * 需要融合通讯服务,支持Android、IOS跨平台融合通讯服务,支持用户在线即时通讯录管,超级管理员可在线修改用户密码,修改个人用户信息。 3. 互联网移动会诊APP: 互联网移动会诊APP需要满足以下要求: * 需要...

    超级朋友圈

    1. 用户界面与用户体验(UI/UX):界面应该直观易用,类似微信的设计,包括顶部导航栏、底部功能按钮(如“发现”、“通讯录”、“我”等)以及中间的主要内容区域。用户体验要流畅,确保用户能够轻松地发布新动态、...

    超级备份v2.3.18.apk

    安卓手机最快捷的数据备份工具,你可以将手机中的应用、通讯录、短信、通话记录、书签、日历等信息备份至SD卡或者Gmail邮箱

    易传多媒体名片 详细介绍

    5. 支持多种手机操作系统,iOS,Android, WP8 等; 6. 机型自适应,适配几乎所有智能手机; 7.3D全景技术,客户体验更加绚丽震撼,过目不忘,增加成交率; 8.270项专利视频传输技术,在2G手机上照样流畅观看视频; 9...

Global site tag (gtag.js) - Google Analytics