`

简单通讯录

 
阅读更多
public class Main extends Activity implements OnItemClickListener {
	GridView buttomMenuGrid;// 底部菜单布局
	String[] buttomMenu_name = { "增加", "删除", "退出" };// 底部菜单项的名字
	int[] buttomMenu_images = { R.drawable.menu_add, R.drawable.menu_delete,
			R.drawable.menu_exit };// 底部菜单项的图片

	ArrayList listdate;
	ListView listView;// 显示所有数据的ListView
	SimpleAdapter adapter;
	ArrayList<Integer> deleteId;// 删除项的ID

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();

		// 单击listview中的某一项的事件
		listView.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				HashMap item = (HashMap) arg0.getItemAtPosition(arg2);
				Integer _id = Integer.parseInt(String.valueOf(item.get("_id")));

				Intent intent = new Intent(Main.this, Detail.class);
				Contact contact = new Contact();
				contact._id = Integer.parseInt(String.valueOf(item.get("_id")));
				contact.name = String.valueOf(item.get("name"));
				contact.phone = String.valueOf(item.get("phone"));

				/* 注意:必须对实体contact进行序列化,即实体类实现Serializable接口,否则无法传递contact到下一个页面 */
				intent.putExtra("contact", contact);
				System.out.println("arg2:" + arg2);
				startActivityForResult(intent, arg2);
			}
		});

		/**
		 * 长按listview的监听事件
		 */
		listView.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				// TODO Auto-generated method stub
				if (deleteId == null) {
					deleteId = new ArrayList<Integer>();
				}
				HashMap item = (HashMap) arg0.getItemAtPosition(arg2);
				Integer _id = Integer.parseInt(String.valueOf(item.get("_id")));

				RelativeLayout relativeLayout = (RelativeLayout) arg1;
				ImageView markedView = (ImageView) relativeLayout.getChildAt(2);//
				// 获取第二个imageView

				if (markedView.getVisibility() == View.VISIBLE) {// 如果已标记就删除
					markedView.setVisibility(View.GONE);
					deleteId.remove(_id);
				} else {// 如果未标记,就标记上,并添加到deleteID中
					markedView.setVisibility(View.VISIBLE);
					deleteId.add(_id);
				}
				return true;
			}
		});

	}

	private void init() {
		
		DBHelper dbHelper = new DBHelper(this);
		dbHelper.openDB();// 打开数据库
		
		listView = (ListView) findViewById(R.id.contact_list);
		adapter = getAdapter();
		listView.setAdapter(adapter);
		listView.setCacheColorHint(Color.TRANSPARENT);// 设置listView的背景透明
		loadBottomMenu();
		buttomMenuGrid.setVisibility(View.VISIBLE);
	}

	/**
	 * 获取底部菜单的适配器
	 * 
	 * @param buttomMenu_name
	 * @param buttomMenu_images
	 * @return
	 */
	public SimpleAdapter getButtomMenuAdapter(String[] buttomMenu_name,
			int[] buttomMenu_images) {
		ArrayList<HashMap<String, Object>> dataArrayList = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < buttomMenu_images.length; i++) {
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("images", buttomMenu_images[i]);
			map.put("name", buttomMenu_name[i]);
			dataArrayList.add(map);
		}
		SimpleAdapter simpleAdapter = new SimpleAdapter(this, dataArrayList,
				R.layout.buttom_menu, new String[] { "images", "name" },
				new int[] { R.id.buttom_menu_image, R.id.buttom_menu_text });
		return simpleAdapter;
	}

	// 重写了onActivityResult方法:处理页面返回后的数据 相当于重新刷新ListView中的数据
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if (resultCode == 3) {// resultCode == 3代表添加一个用户返回
			adapter = getAdapter();// 重新获取适配器
		}
		listView.setAdapter(adapter);// 重新设置ListView的适配器
	}

	// 获取适配器
	public SimpleAdapter getAdapter() {
		DBHelper dbHelper = new DBHelper(this);
		listdate = dbHelper.getAll();
		adapter = new SimpleAdapter(this, listdate, R.layout.list_item,
				new String[] { "name", "phone" }, new int[] { R.id.name_item,
						R.id.phone_item });
		return adapter;
	}

	// 装载底部菜单
	private void loadBottomMenu() {
		if (buttomMenuGrid == null) {
			buttomMenuGrid = (GridView) findViewById(R.id.buttom_menu);
			buttomMenuGrid.setNumColumns(3);
			buttomMenuGrid.setGravity(Gravity.CENTER);
			buttomMenuGrid.setVerticalSpacing(10);
			buttomMenuGrid.setHorizontalSpacing(10);
			buttomMenuGrid.setAdapter(getButtomMenuAdapter(buttomMenu_name,
					buttomMenu_images));// 设置底部菜单的Adapter
			buttomMenuGrid.setOnItemClickListener(this);
		}

	}

	// 菜单单击事件
	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
		switch (arg2) {
		case 0:// 添加
			if (deleteId == null || deleteId.size() == 0) {
				Intent intent = new Intent(Main.this, Add.class);
				startActivityForResult(intent, 3);
			} else {
				// 如果deleteId不空,清空,防止数据的残留
				deleteId.clear();
			}
			break;
		case 1:// 删除
			if (deleteId == null || deleteId.size() == 0) {
				Toast.makeText(Main.this, "未标记任何记录\n长按一条记录即可标记",
						Toast.LENGTH_LONG).show();
			} else {
				new AlertDialog.Builder(Main.this).setTitle("确定要删除吗?")
						.setPositiveButton("确定", new OnClickListener() {
							public void onClick(DialogInterface dialog,
									int which) {
								DBHelper dbHelper = new DBHelper(Main.this);
								dbHelper.deleteMarked(deleteId);
								adapter = getAdapter();
								listView.setAdapter(adapter);
								deleteId.clear();
							}
						}).setNegativeButton("取消", null).create().show();
			}
			break;
		case 2:// 退出
			finish();
			break;
		default:
			break;
		}

	}
}

 

分享到:
评论

相关推荐

    android 简易通讯录(sqlite示例)

    在Android平台上,构建一个简易通讯录是一个常见的应用场景,它涉及到数据存储、用户界面以及数据管理等方面。本项目采用SQLite作为数据库管理系统,SQLite是一款轻量级的、嵌入式的、关系型数据库,尤其适合于移动...

    简易通讯录

    【简易通讯录】是一款基于Android平台开发的通讯录应用,旨在提供基本的联系人管理功能,包括创建、读取、更新和删除(CRUD)联系人记录,以及直接通过应用拨打电话。这款应用的设计和实现涉及到Android开发的核心...

    Android简易通讯录

    【Android简易通讯录】是一个适合初学者学习的项目,它提供了基本的联系人管理功能,让你能够理解Android应用开发的基本架构和组件。这个项目没有包括通话和短信功能,但你可以根据自己的需求进行扩展。 首先,...

    ASP.NET简易通讯录

    【ASP.NET简易通讯录】项目是一个面向初学者的教程,旨在教授如何利用ASP.NET、C#编程语言以及SQL Server 2000数据库来构建一个基础的通讯录系统。这个项目可以帮助初学者理解Web应用程序的基本架构,特别是针对.NET...

    c课程设计 简单通讯录的实现

    在C语言课程设计中,创建一个简单的通讯录系统是一个经典的项目,它可以帮助初学者更好地理解和应用C语言的基础知识。这个项目旨在实现一个基本的联系人管理功能,包括添加、删除、查找和显示联系人信息。以下是一些...

    简单通讯录简单通讯录

    《Java连接Access数据库实现简单通讯录》 在IT领域,数据管理是不可或缺的一部分,而通讯录作为日常生活中常见的数据管理工具,其开发和实现对于学习和理解数据库操作有着重要作用。本项目“简单通讯录”正是基于...

    C#简单通讯录

    《C#实现简单通讯录系统解析》 C#是一种广泛应用于软件开发的编程语言,尤其在Windows平台上,它以其高效、易用性受到开发者青睐。本篇将详细讲解如何使用C#来创建一个简单的通讯录系统,该系统利用XML文件进行数据...

    Android简易通讯录源码

    在Android平台上,开发一款简易通讯录应用涉及到许多关键知识点,主要集中在SQLite数据库的使用和ListView控件的交互。SQLite是Android内置的关系型数据库,用于存储应用程序的数据,而ListView则是显示大量数据列表...

    AndroidStudio安卓课设-简易通讯录

    **Android Studio 安卓课设 - 简易通讯录** 在本次课设中,我们将会探讨如何使用Android Studio开发一个基于SQLite数据库的简易通讯录应用。这个应用包含两个主要界面:启动页和主页面。在主页面上,用户可以进行...

    VC++做的简单通讯录系统

    《VC++实现的简易通讯录系统详解》 在信息技术领域,开发个人通讯录系统是一项常见的实践项目,尤其适合初学者入门。本项目采用Microsoft的Visual C++(简称VC++)作为开发工具,构建了一个简单的通讯录系统,旨在...

    Android Studio简易通讯录界面.rar

    【Android Studio简易通讯录界面】 在Android开发中,创建一个简易的通讯录界面是一个常见的练习,可以帮助开发者熟悉数据获取、UI设计以及性能优化等基础知识。本项目主要涉及以下几个关键知识点: 1. **获取手机...

    asp实现简易 通讯录

    在本案例中,"asp实现简易通讯录"是一个使用ASP技术构建的简单联系人管理系统,它提供了基本的联系人信息的增加、删除、修改和查询功能。下面将详细介绍这个系统可能涉及的关键知识点。 1. **ASP基础**: ASP是一...

    简易通讯录(c语言版)

    【简易通讯录(C语言版)】是一款基于链表数据结构实现的通讯录管理程序,旨在帮助用户方便地存储、删除和查询联系人信息。在C语言中,链表是一种非常重要的数据结构,它允许我们在运行时动态地添加或删除元素,而...

    C#学习-制作简易通讯录

    在本项目"C#学习-制作简易通讯录"中,我们将探讨如何使用C#编程语言来构建一个基础的通讯录应用程序。这个项目对于初学者来说是一个很好的起点,因为它涵盖了几个核心的C#概念和技术,如面向对象编程、窗体界面设计...

    c++课程设计 简单通讯录管理 利用类和指针实现

    本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供关键字(只能是英文关键字进行查找)查找功能,可以对数据进行修改、删除、添加等操作。 各按钮的功能如下: 查找记录:以姓名为...

    个人简易通讯录(jsp+javabean+mysql)

    【个人简易通讯录(jsp+javabean+mysql)】是一个基于Web的个人通讯录管理系统,主要用于学习和实践Java Web开发技术。这个项目的核心在于利用Java Servlet(通过JSP)、JavaBeans以及MySQL数据库来实现数据的存储、...

    c++简易通讯录

    在这个“C++简易通讯录”项目中,我们利用C++的基本语法和面向对象编程(OOP)概念来实现一个简单的联系人管理程序。以下是对该项目的详细解析: 1. **面向对象编程基础** - 类(Class):在C++中,类是定义对象...

    C#简易通讯录

    【C#简易通讯录】项目是一个使用C#编程语言实现的简单通讯录应用程序,它旨在帮助用户管理和存储联系人信息。这个项目对于初学者来说是一个很好的实践案例,可以帮助他们掌握C#的基础知识以及如何构建一个实用的应用...

    android简易通讯录--适合初学者

    在Android平台上,开发一个简易通讯录应用是许多初学者入门的首选项目,因为这个项目能够涵盖许多基础且实用的技术点。下面将详细讲解这个项目涉及的主要知识点,包括Android应用程序的基本结构、用户界面设计、...

Global site tag (gtag.js) - Google Analytics