首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

容易通讯录

2012-09-27 
简单通讯录public class Main extends Activity implements OnItemClickListener {GridView buttomMenuGri

简单通讯录

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;// 显示所有数据的ListViewSimpleAdapter adapter;ArrayList<Integer> deleteId;// 删除项的IDpublic 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() {@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {// TODO Auto-generated method stubif (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);//// 获取第二个imageViewif (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));// 设置底部菜单的AdapterbuttomMenuGrid.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;}}}

?

热点排行