通讯录开发学习7(终结)

 跟着一个视频做的通讯录开发,但是那视频没录完,因此,我所做到的也到此,接下去的,如果要做的话,可以自己再去试试,不过,貌似没时间,看看书吧,很多基础还不扎实,先跟着做吧,那么我跟着学习的所有代码如下,

1、文件目录

2、具体的代码

2.1 MainActivity.java

package test.contact;

import java.util.ArrayList;
import java.util.HashMap;

import test.contact.db.DBHelper;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {
	
	GridView gv_button_menu;
	
	ListView lv_userList;//用户列表
	SimpleAdapter adapter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.main);
		loadUserList();
	}
	
	private void loadUserList(){
		lv_userList = (ListView)this.findViewById(R.id.lv_userlist);
		
		ArrayList data = DBHelper.getInstance(this).getUserList();//这个方法在DBHelper里
            adapter = new SimpleAdapter(this, 
										data, R.layout.list_item, 
										new String[]{"imageId","name","mobilePhone"}, 
										new int[]{R.id.user_image,R.id.tv_showname,R.id.tv_showmobilephone});
		lv_userList.setAdapter(adapter);
		
		//listview里点击每一项就出现该内容的详细信息页面,这是每一项的响应事件
		lv_userList.setOnItemClickListener(new OnItemClickListener(){

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position,
					long id) {
				HashMap map = (HashMap)parent.getItemAtPosition(position);
				Intent intent = new Intent(MainActivity.this,DetailActivity.class);
				intent.putExtra("usermap",map);
				//当requestCode为3的时候代表请求转向DetailActivity这个页面
				startActivityForResult(intent,3);
			}
			
		});
	}
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if(keyCode==KeyEvent.KEYCODE_MENU){
			//
			if(gv_button_menu==null){
				loadButtonMenu();
			}
			if(gv_button_menu.getVisibility()==View.GONE){
				gv_button_menu.setVisibility(View.VISIBLE);
			} else {
				gv_button_menu.setVisibility(View.GONE);
			}
		}
		return super.onKeyDown(keyCode, event);
	}
	
	//加载底部的菜单(gridView)
	@SuppressWarnings("unchecked")
	private void loadButtonMenu(){
		gv_button_menu =(GridView) this.findViewById(R.id.gv_button_menu);
		gv_button_menu.setBackgroundResource(R.drawable.menu_background);
		gv_button_menu.setNumColumns(5);//设置有多少列
		gv_button_menu.setGravity(Gravity.CENTER);//设置位置 居中
		gv_button_menu.setVerticalSpacing(100);//设置水平间隔
		gv_button_menu.setHorizontalSpacing(10);//设置垂直间隔
		
		ArrayList data = new ArrayList();
		
		//是gridview里的图片和底部的字 ,这些是构造data
		HashMap map = new HashMap();
		map.put("itemImage", R.drawable.menu_new);
		map.put("itemText", "增加");
		data.add(map);
		
		map = new HashMap();
		map.put("itemImage", R.drawable.menu_search);
		map.put("itemText", "查找");
		data.add(map);

		map = new HashMap();
		map.put("itemImage", R.drawable.menu_delete);
		map.put("itemText", "删除");
		data.add(map);
		
		map = new HashMap();
		map.put("itemImage", R.drawable.controlbar_showtype_list);
		map.put("itemText", "菜单");
		data.add(map);
		
		map = new HashMap();
		map.put("itemImage", R.drawable.menu_exit);
		map.put("itemText", "退出");
		data.add(map);
		
		//创建Adapter
	SimpleAdapter adapter = 
new SimpleAdapter(this,data, R.layout.item_menu,new String[]{"itemImage","itemText"},new int[]{R.id.item_image,R.id.item_text});
			//SimpleAdapter的参数有(context,listmapdata,resource,from,to),其中resource是布局,即item_menu.xml
	//data中的map都将布局(resources)通过后面对应的两个联系起来 
		
		gv_button_menu.setAdapter(adapter);
		//gridview只能展示,是个视图,而适配器就是将数据和展现方式联系起来的方式
		
		gv_button_menu.setOnItemClickListener(new OnItemClickListener(){

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position,
					long id) {
				//第一个参数代表所有数据
				//HashMap map = (HashMap)parent.getItemAtPosition(1);
				//postition是指弹出的那个ItemMenu里的项(如增加,查找,删除,菜单,退出等5个)
				switch(position){
				case 0:{
					Intent intent = new Intent(MainActivity.this,AddNewActivity.class);
					//0代表请求跳转到添加界面(AddNewActivity)
					startActivityForResult(intent,0);
					break;
				}
				case 1:{
					break;
				}
				case 2:{
					break;
				}
				case 3:{
					break;
				}
				case 4:{
					break;
				}
				}
			}
			
		});
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		//resultCode表示跳转码
		if(resultCode==0){
			if(resultCode==1){
				//增加用户成功 进行刷新
				ArrayList userData = DBHelper.getInstance(this).getUserList();//这个方法在DBHelper里
	            adapter = new SimpleAdapter(this, 
											userData, R.layout.list_item, 
											new String[]{"imageId","name","mobilePhone"}, 
											new int[]{R.id.user_image,R.id.tv_showname,R.id.tv_showmobilephone});
	            	lv_userList.setAdapter(adapter);
				
			} else  if(resultCode==2){
				//增加用户失败, 不进行刷新
			}
		}
		super.onActivityResult(requestCode, resultCode, data);
	}
	
	
}


2.2 DBHelper.java

package test.contact.db;

import java.util.ArrayList;
import java.util.HashMap;

import test.contact.entity.User;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {
	//将DBHelper构造成一个单例模式(1.写成私有 2.)
	public final static  String DB_NAME = "contact";
	
	public final static int VERSION = 3;//数据库的版本
	
	private static DBHelper instance = null;
	
	private SQLiteDatabase db;//用这个SQLIiteDBHelper主要是为了初始化这个数据库
	//单例模式
	public static DBHelper getInstance(Context context){
		if(instance==null){
			instance = new DBHelper(context);
		}
		return instance;
	}
	
	private  void openDatabase(){
		if(db==null){
			db = this.getWritableDatabase();
		}
	}
	
	private DBHelper(Context context) {
		super(context, DB_NAME,null, VERSION);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {//在这里把表建立起来,这个方法只执行一次,如果有表了,就不执行这个方法了
		// TODO Auto-generated method stub
		
		StringBuffer tableCreate = new StringBuffer();
		tableCreate.append("create table user( _id integer primary key autoincrement,")
				   .append("name text,")
				   .append("mobilePhone text,")
				   .append("familyPhone text,")
				   .append("officePhone text,")
				   .append("address text,")
				   .append("position text, ")
				   .append("company text,")
				   .append("email text,")
				   .append("otherContact text ,")
				   .append("zipCode text,")
				   .append("remark text,")
				   .append("imageId int)");
				   
				db.execSQL(tableCreate.toString());
	
	}
	
	//如果数据库版本不一致才执行,一般做法是:清除数据库然后重新建表
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		String  sql = "drop table if exists user";
		db.execSQL(sql);
		onCreate(db);
	}
	//保存,把user当作一个对象,将增加联系人的信息都存到这里来
	public long save(User user){
		openDatabase();//每次增加记录的时候,open一下
		ContentValues value = new ContentValues();
		value.put("name", user.name);
		value.put("mobilePhone", user.mobilePhone);
		value.put("familyPhone", user.familyPhone);
		value.put("officePhone", user.officePhone);
		value.put("address", user.address);
		value.put("position", user.position);
		value.put("company", user.company);
		value.put("email", user.email);
		value.put("otherContact", user.otherContact);
		value.put("zipCode", user.zipCode);
		value.put("remark", user.remark);
		value.put("imageId", user.imageId);
		
		 return db.insert("user", null, value);
		//就是点击保存后能回到主界面
	}

	//获得数据放在用户列表中
	public ArrayList getUserList(){
		openDatabase();
		Cursor cursor = db.query("user", null, null, null, null, null, null);//查询表的一些条件
		ArrayList list = new ArrayList();
		while(cursor.moveToNext()){
			HashMap map = new HashMap();
			//我们这里将所有的数据都填充进来,如果需要展现,可以在具体的类中选择要展示的
			map.put("_id", cursor.getInt(cursor.getColumnIndex("_id")));
			map.put("familyPhone", cursor.getString(cursor.getColumnIndex("familyPhone")));
			map.put("officePhone",  cursor.getString(cursor.getColumnIndex("officePhone")));
			map.put("company", cursor.getString(cursor.getColumnIndex("company")));
			map.put("position",  cursor.getString(cursor.getColumnIndex("position")));
			map.put("email",  cursor.getString(cursor.getColumnIndex("email")));
			map.put("address",  cursor.getString(cursor.getColumnIndex("address")));
			map.put("otherContact",  cursor.getString(cursor.getColumnIndex("otherContact")));
			map.put("zipCode",  cursor.getString(cursor.getColumnIndex("zipCode")));
			map.put("remark",  cursor.getString(cursor.getColumnIndex("remark")));
			map.put("imageId",cursor.getInt(cursor.getColumnIndex("imageId")));
			map.put("name", cursor.getString(cursor.getColumnIndex("name")));
			map.put("mobilePhone", cursor.getString(cursor.getColumnIndex("mobilePhone")));
			list.add(map);
		}
			return list;
	}
}


2.3 User.java

package test.contact.entity;

public class User {
	public int _id;
	public int imageId;
	public String name;
	public String mobilePhone;
	public String familyPhone;
	public String position;
	public String company;
	public String address;
	public String zipCode;
	public String email;
	public String otherContact;
	public String remark;
	public String officePhone;
	
}	


2.4 AddNewActivity.java

package test.contact;
import test.contact.db.DBHelper;
import test.contact.entity.User;//引入user的包

import test.contact.entity.User;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ViewSwitcher.ViewFactory;


public class AddNewActivity extends Activity {
	ImageButton btn_img;
	AlertDialog imageChooseDialog;
	Gallery gallery;
	ImageSwitcher is;
	int imagePosition;//在图片选择中确定按钮是提交的图片的id,如果默认的话,值为0
	
	//增加联系人信息的这个界面里的那些编辑框
	EditText et_name;
	EditText et_mobliePhone;
	EditText et_familyPhone;
	EditText et_officePhone;
	EditText et_position;
	EditText et_company;
	EditText et_address;
	EditText et_zipCode;
	EditText et_email;
	EditText et_otherContact;
	EditText et_remark;
	
	Button btn_save;
	Button btn_return;
	
	private int[] images={
						  R.drawable.icon,
						  R.drawable.image1,R.drawable.image2,
						  R.drawable.image3,R.drawable.image4,
			              R.drawable.image5,R.drawable.image6,
			              R.drawable.image7,R.drawable.image8,
			              R.drawable.image9,R.drawable.image10};
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.addnew);
        
        initWidget();//初始化这个界面里的EditText和两个Button
           
        //响应"保存"按钮事件
        btn_save = (Button)this.findViewById(R.id.btn_save);
        btn_save.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String name = et_name.getText().toString();
				if(name.equals("")){
					Toast.makeText(AddNewActivity.this, "姓名不能为空", Toast.LENGTH_LONG).show();
					return;
					}
				String mobilePhone = et_mobliePhone.getText().toString();
				String officePhone = et_officePhone.getText().toString();
				String familyPhone = et_familyPhone.getText().toString();
				String position = et_position.getText().toString();
				String company = et_company.getText().toString();
				String address = et_address.getText().toString();
				String email = et_email.getText().toString();
				String zipCode = et_zipCode.getText().toString();
				String otherContact = et_otherContact.getText().toString();
				String remark = et_remark.getText().toString();
				//如果没有给Image赋图像,那么imageId默认为0,
				//所以在上面的Image里的第一个是icon,作为默认的那个图片
				int imageId = images[imagePosition];
				
				//联系人
				User user = new User();
				user.address = address;
				user.company = company;
				user.email = email;
				user.familyPhone = familyPhone;
				user.imageId = imageId;
				user.mobilePhone = mobilePhone;
				user.otherContact = otherContact;
				user.name = name;
				user.officePhone = officePhone;
				user.position = position;
				user.remark = remark;
				user.zipCode = zipCode;
				
				//保存用户信息到数据库,执行后就到了DBHelper里的save方法了
				//如果保存成功就发出提示信息
				long success = DBHelper.getInstance(AddNewActivity.this).save(user);
				if(success!=-1){
					Toast.makeText(AddNewActivity.this, "添加成功!", Toast.LENGTH_LONG);
					//resultCode为1时表示增加用户成功,返回到主界面
					setResult(1);
					finish();
				} else {
					Toast.makeText(AddNewActivity.this, "添加失败,请重新操作!", Toast.LENGTH_SHORT);
					//resultCode为1时表示增加用户失败
					setResult(2);
					finish();
				}
				
			}
        	
        });
        
        //实现的主要是修改Image按钮里的东西
    	btn_img=(ImageButton)this.findViewById(R.id.btn_img);
		btn_img.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				initImageChooseDialog(); //当点击选择图片(即名字旁边的图片按钮时的方法)
				imageChooseDialog.show();
			}
			
		});
		
		//返回按钮的响应事件
		btn_return.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				setResult(2);
				finish();
			}
			
		});
    }
    
    //写个方法将这个界面的编辑框和保存取消等控件都初始化
    public void initWidget(){
    	et_name=(EditText)this.findViewById(R.id.et_name);
    	et_mobliePhone=(EditText)this.findViewById(R.id.et_mobilephone);
    	et_familyPhone=(EditText)this.findViewById(R.id.et_familyphone);
    	et_officePhone=(EditText)this.findViewById(R.id.et_officephone);
    	et_position=(EditText)this.findViewById(R.id.et_position);
    	et_company=(EditText)this.findViewById(R.id.et_company);
    	et_address=(EditText)this.findViewById(R.id.et_address);
    	et_zipCode=(EditText)this.findViewById(R.id.et_zipcode);
    	et_email=(EditText)this.findViewById(R.id.et_email);
    	et_otherContact=(EditText)this.findViewById(R.id.et_other);
    	et_remark=(EditText)this.findViewById(R.id.et_remark);
    	btn_save=(Button)this.findViewById(R.id.btn_save);
    	btn_return=(Button)this.findViewById(R.id.btn_return);
    	
    }
    
    private void initImageChooseDialog(){
    	AlertDialog.Builder builder = new AlertDialog.Builder(this);
    	builder.setTitle("请选择图像");
    	
    	//添加选择和取消图片的按钮
    	builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				btn_img.setImageResource(images[imagePosition]);//在选中一张图片后,获得这个图片的id,才能选中它了
				
			}
		});
    	
    	builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		});
    	LayoutInflater inflater = LayoutInflater.from(this);
    	View view = inflater.inflate(R.layout.imageswitch, null);
    	//1、Gallery的东西需要显示出来,
    	 gallery = (Gallery) view.findViewById(R.id.img_gallery); 
    	gallery.setAdapter(new ImageAdapter(this));
    	gallery.setSelection(images.length/2);//定位中中间的图片
    	
    	
    	//2、Switcher方面,选中图片 
    	 is=(ImageSwitcher) view.findViewById(R.id.image_switcher);
       	is.setFactory(new MyViewFactory(this));
       	
      //1.1 Gallery的响应事件 
       	gallery.setOnItemSelectedListener(new OnItemSelectedListener(){

			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int position, long arg3) {
				// TODO Auto-generated method stub
				imagePosition = position;
				is.setImageResource(images[position%images.length]);//取余
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
    		
    	});  
    	builder.setView(view);
    	imageChooseDialog = builder.create();
    }
    //Gallery的Adapter,实现BaseAdapter内部类
    class ImageAdapter extends BaseAdapter{
    	private Context context;
    	public ImageAdapter(Context context){
    		this.context=context;
    	}
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			//return images.length;
			//实现在imageswitch.xml即那个弹出来要早增加图片的界面,其中的图片让其循环出现
			return Integer.MAX_VALUE;//使得它返回一个比较大的值
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return 0;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			ImageView iv = new ImageView(context);
			iv.setImageResource(images[position%images.length]);
			iv.setAdjustViewBounds(true);//设置适应视图的大小
			iv.setLayoutParams(new Gallery.LayoutParams(80,80));//设置其大小
			//设置图片之间的间隔
			iv.setPadding(15, 10, 15, 10);
			return iv;
		}
    	
    }
    
    //Switcher的Factory,实现ViewFactory的内部类
    class MyViewFactory implements ViewFactory{
    	private Context context;//需要的上下文
    	public MyViewFactory(Context context){
    		this.context=context;
    	}
		@Override
		public View makeView() {
			// TODO Auto-generated method stub
			ImageView iv = new ImageView(context);
			iv.setLayoutParams(new ImageSwitcher.LayoutParams(90,90));
			
			return iv;
		}
    	
    }
}


2.5 DetailActivity.java

package test.contact;

import java.util.HashMap;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;

public class DetailActivity extends Activity {
	EditText et_name;
	EditText et_mobliePhone;
	EditText et_familyPhone;
	EditText et_officePhone;
	EditText et_position;
	EditText et_company;
	EditText et_address;
	EditText et_zipCode;
	EditText et_email;
	EditText et_otherContact;
	EditText et_remark;
	ImageButton btn_img;
	
	HashMap map;
	
	//三个按钮(修改,删除,返回)
	Button btn_modify;
	Button btn_return;
	Button btn_delete;
	
	boolean flag=false;//标识位
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.detail);		
		
		Intent intent = getIntent();
		 map = (HashMap)intent.getSerializableExtra("usermap");
		 initWidget();
		displayData();
		setEditTextDisable();
		
		//响应修改按钮事件
		btn_modify.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				setEditTextAble();
				if(flag){//flag为true时(之前flag初始为false)
					flag = false;
					btn_modify.setText("修改");
					setEditTextDisable();
				}else {//flag为false时
					flag = true;
					btn_modify.setText("保存");
					setEditTextAble();
				}
			}
			
		});
				
	
		
	}
	
	 //写个方法将这个界面的编辑框和保存取消等控件都初始化
    public void initWidget(){
    	et_name=(EditText)this.findViewById(R.id.et_name);
    	et_mobliePhone=(EditText)this.findViewById(R.id.et_mobilephone);
    	et_familyPhone=(EditText)this.findViewById(R.id.et_familyphone);
    	et_officePhone=(EditText)this.findViewById(R.id.et_officephone);
    	et_position=(EditText)this.findViewById(R.id.et_position);
    	et_company=(EditText)this.findViewById(R.id.et_company);
    	et_address=(EditText)this.findViewById(R.id.et_address);
    	et_zipCode=(EditText)this.findViewById(R.id.et_zipcode);
    	et_email=(EditText)this.findViewById(R.id.et_email);
    	et_otherContact=(EditText)this.findViewById(R.id.et_other);
    	et_remark=(EditText)this.findViewById(R.id.et_remark);
    	btn_img = (ImageButton)this.findViewById(R.id.btn_img);
    	
    	btn_modify=(Button)this.findViewById(R.id.btn_modify);
    	btn_delete=(Button)this.findViewById(R.id.btn_delete);
    	btn_return=(Button)this.findViewById(R.id.btn_return);
    }
    //刚进去后,所有的内容都无法修改。就是对应detail页面,进去后是无法修改的
    private void setEditTextDisable(){
    	et_name.setEnabled(false);
    	et_mobliePhone.setEnabled(false);
    	et_familyPhone.setEnabled(false);
    	et_officePhone.setEnabled(false);
    	et_position.setEnabled(false);
    	et_company.setEnabled(false);
    	et_address.setEnabled(false);
    	et_zipCode.setEnabled(false);
    	et_email.setEnabled(false);
    	et_otherContact.setEnabled(false);
    	et_remark.setEnabled(false);
    	btn_img.setEnabled(false);
    	
    	
    }
    //点击修改后,所有的控件都是可编辑的
    private void setEditTextAble(){
    	et_name.setEnabled(true);
    	et_mobliePhone.setEnabled(true);
    	et_familyPhone.setEnabled(true);
    	et_officePhone.setEnabled(true);
    	et_position.setEnabled(true);
    	et_company.setEnabled(true);
    	et_address.setEnabled(true);
    	et_zipCode.setEnabled(true);
    	et_email.setEnabled(true);
    	et_otherContact.setEnabled(true);
    	et_remark.setEnabled(true);
    	btn_img.setEnabled(true);
    }
   
    private void displayData(){
    	et_name.setText(String.valueOf(map.get("name")));
    	et_mobliePhone.setText(String.valueOf(map.get("mobilephone")));
    	et_familyPhone.setText(String.valueOf(map.get("familyPhone")));
    	et_officePhone.setText(String.valueOf(map.get("officePhone")));
    	et_position.setText(String.valueOf(map.get("position")));
    	et_company.setText(String.valueOf(map.get("company")));
    	et_address.setText(String.valueOf(map.get("address")));
    	et_zipCode.setText(String.valueOf(map.get("zipCode")));
    	et_email.setText(String.valueOf(map.get("email")));
    	et_otherContact.setText(String.valueOf(map.get("otherContact")));
    	et_remark.setText(String.valueOf(map.get("remark")));
    	btn_img.setImageResource(Integer.parseInt(String.valueOf(map.get("imageId"))));
    	
    	
    }
    
}


3、所有的布局文件

3.1 main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

	<LinearLayout 
		android:id="@+id/list_ll"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
	>
	
		<ListView  
			android:id="@+id/lv_userlist"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"		
		></ListView>
	
	</LinearLayout>
	
	<GridView 
		android:id="@+id/gv_button_menu"
		android:layout_width="fill_parent"
		android:layout_height="65sp"
		android:layout_alignParentBottom="true"
		android:visibility="gone"
		></GridView>
	
	<LinearLayout 
			android:id="@+id/ll_search"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:layout_alignParentLeft="true"
			android:layout_above="@+id/gv_button_menu"
			android:visibility="gone"
		>
		<EditText 
			android:id="@+id/et_search"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:hint="Enter the name or phone"
			android:textSize="18sp"
		></EditText>
		
		</LinearLayout>
		
		
	
</RelativeLayout>


3.2 addnew.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
<ScrollView 
	android:layout_weight="4"
	android:layout_height="wrap_content"
	android:layout_width="fill_parent"
	android:scrollbars="vertical"
>
 
   <LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical">
		
		<LinearLayout 
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:layout_marginLeft="10dp"
			android:layout_marginRight="10dp"
			android:orientation="horizontal">
				
				<ImageButton
					android:id="@+id/btn_img"
					android:layout_width="60px"
					android:layout_height="60px"
					android:src="@drawable/icon"
					
				   ></ImageButton>
				<EditText 
					android:id="@+id/et_name"
					android:layout_height="wrap_content"
					android:layout_width="fill_parent"
					android:gravity="top"
					android:layout_gravity="center_vertical"
					android:hint="姓名"
				 ></EditText>				
		</LinearLayout>
		
		
	<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="手机"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_mobilephone"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="手机"
			android:phoneNumber="true"	
		></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="办公室电话"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_officephone"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="办公室电话"
			android:phoneNumber="true"	
		></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="家庭电话"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_familyphone"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="家庭电话"
			android:phoneNumber="true"	
		></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="职务职称"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_position"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="职务职称"
		></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="单位名称"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_company"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="单位名称"
			></EditText>
	</LinearLayout>
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="地址"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_address"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="地址"
			></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="邮政编码"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_zipcode"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="邮政编码"
			android:phoneNumber="true"	
		></EditText>
	</LinearLayout>
	
	
	<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="Email"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_email"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="Email"
		></EditText>
	</LinearLayout>
	
	
	<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="其他联系方式"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_other"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="其他联系方式"
		></EditText>
	</LinearLayout>
	
	<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="备注"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_remark"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="备注"
		></EditText>
	</LinearLayout>
		
  </LinearLayout>


</ScrollView>




<LinearLayout 
	android:layout_weight="1"
	android:layout_height="wrap_content"
	android:layout_width="fill_parent"
	android:layout_marginLeft="10dp"
	android:layout_marginRight="10dp"
>
	<Button 
		android:id="@+id/btn_save"
		android:layout_weight="1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="保存"	
	></Button>
	
	<Button 
		android:id="@+id/btn_return"
		android:layout_weight="1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="返回"	
	></Button>

</LinearLayout>


</LinearLayout>


3.3 detail.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
<ScrollView 
	android:layout_weight="4"
	android:layout_height="wrap_content"
	android:layout_width="fill_parent"
	android:scrollbars="vertical"
>
 
   <LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical">
		
		<LinearLayout 
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:layout_marginLeft="10dp"
			android:layout_marginRight="10dp"
			android:orientation="horizontal">
				
				<ImageButton
					android:id="@+id/btn_img"
					android:layout_width="60px"
					android:layout_height="60px"
					android:src="@drawable/icon"
					
				   ></ImageButton>
				<EditText 
					android:id="@+id/et_name"
					android:layout_height="wrap_content"
					android:layout_width="fill_parent"
					android:gravity="top"
					android:layout_gravity="center_vertical"
				
					android:hint="姓名"
				 ></EditText>				
		</LinearLayout>
		
		
	<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="手机"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_mobilephone"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="手机"
			android:phoneNumber="true"	
		></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="办公室电话"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_officephone"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="办公室电话"
			android:phoneNumber="true"	
		></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="家庭电话"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_familyphone"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="家庭电话"
			android:phoneNumber="true"	
		></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="职务职称"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_position"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="职务职称"
		></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="单位名称"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_company"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="单位名称"
			></EditText>
	</LinearLayout>
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="地址"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_address"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="地址"
			></EditText>
	</LinearLayout>
		
		
		<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="邮政编码"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_zipcode"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="邮政编码"
			android:phoneNumber="true"	
		></EditText>
	</LinearLayout>
	
	
	<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="Email"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_email"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="Email"
		></EditText>
	</LinearLayout>
	
	
	<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="其他联系方式"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_other"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="其他联系方式"
		></EditText>
	</LinearLayout>
	
	<LinearLayout 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"	
	>
	 	<TextView 
	 		android:layout_width="fill_parent"
	 		android:layout_height="wrap_content"
	 		android:text="备注"
	 		android:textSize="20dp"
	 	></TextView>
		<EditText 
			android:id="@+id/et_remark"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:gravity="top"
			android:hint="备注"
		></EditText>
	</LinearLayout>
		
  </LinearLayout>


</ScrollView>




<LinearLayout 
	android:layout_weight="1"
	android:layout_height="wrap_content"
	android:layout_width="fill_parent"
	android:layout_marginLeft="10dp"
	android:layout_marginRight="10dp"
>
	<Button 
		android:id="@+id/btn_modify"
		android:layout_weight="1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="修改"	
	></Button>
	
	<Button 
		android:id="@+id/btn_delete"
		android:layout_weight="1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="删除"	
	></Button>
 <Button 
		android:id="@+id/btn_return"
		android:layout_weight="1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="返回"	
	></Button>
</LinearLayout>


</LinearLayout>


3.4 imageswitch.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<Gallery android:id="@+id/img_gallery" 
			android:layout_width="fill_parent"
			android:layout_height="110px" 
			android:layout_marginTop="10px"
			android:layout_alignParentLeft="true"></Gallery>

	<ImageSwitcher android:id="@+id/image_switcher"
				android:layout_width="90px" 
				android:layout_height="90px"
				android:layout_alignParentTop="true" 
				android:layout_centerHorizontal="true"
				android:layout_alignBottom="@+id/img_gallery"></ImageSwitcher>


</RelativeLayout>


3.5 item_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
    android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:paddingBottom="5dip"
	>
		<ImageView 
				android:id="@+id/item_image"
				android:layout_centerHorizontal="true"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content"
							 ></ImageView>
		<TextView 
				android:id="@+id/item_text"
				android:layout_below="@+id/item_image"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content"
				android:layout_centerHorizontal="true"
				
		></TextView>


</RelativeLayout>


3.6 list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <ImageView  
    	android:id="@+id/user_image"
    	android:layout_width="50px"
    	android:layout_height="50px"
    	android:layout_alignParentTop="true"
    	android:layout_alignParentLeft="true"    	
    ></ImageView>
    
    <LinearLayout  
    	android:layout_width="fill_parent"
    	android:layout_height="50px"
    	android:orientation="vertical"
    	android:layout_alignParentTop="true"
    	android:layout_alignParentRight="true"
    	android:layout_toRightOf="@+id/user_image"
        >
    		<LinearLayout  
    			android:layout_width="fill_parent"
    			android:layout_height="25px"
    			android:orientation="horizontal"
    			>
    				<TextView 
    					android:id="@+id/tv_showname"
    					android:layout_width="wrap_content"
    					android:layout_height="wrap_content"
    					android:layout_weight="1"
    					android:text="姓名:"
    					android:textSize="17sp"
    					android:gravity="top"
    				></TextView>
    				
    				<TextView 
    					android:layout_width="wrap_content"
    					android:layout_height="wrap_content"
    					android:layout_weight="7"
    					android:textSize="17sp"
    					android:gravity="left"
    				></TextView>
    				</LinearLayout>
    				
         	<LinearLayout  
    			android:layout_width="fill_parent"
    			android:layout_height="25px"
    			android:orientation="horizontal"
    			>
    				<TextView 
    					android:id="@+id/tv_showmobilephone"
    					android:layout_width="wrap_content"
    					android:layout_height="wrap_content"
    					android:layout_weight="1"
    					android:text="手机:"
    					android:textSize="17sp"
    					android:gravity="top"
    				></TextView>
    				
    				<TextView 
    					android:layout_width="wrap_content"
    					android:layout_height="wrap_content"
    					android:layout_weight="7"
    					android:textSize="17sp"
    					android:gravity="left"
    				></TextView>
    				</LinearLayout>
    	
    </LinearLayout>



</RelativeLayout>


4、每个XML对应的界面是

4.1 main.xml

4.2 addnew.xml

4.3 detail.xml

 

4.4 imageswitch.xml

4.5 item_menu.xml

4.6 list_item.xml

5、在AndroidManifest.xml里的内容

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="test.contact"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".AddNewActivity"
                  android:label="@string/app_name">
          </activity>
 <activity android:name=".DetailActivity"
                  android:label="@string/app_name">
          </activity>
	
	  <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest> 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值