package com.android.contactsmanager;
import java.util.ArrayList;
import java.util.Random;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CursorTreeAdapter;
import android.widget.EditText;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import com.android.contactsmanager.bean.MyConstant;
import com.android.contactsmanager.dao.ContactsManagerDbAdater;
public class ContactsManager extends Activity{
public static final String TAG = "ContactsManager";
private ContactsManagerDbAdater contactsManagerDbAdapter;
int groupNameIndex;
private MyCursrTreeAdapter myCursorTreeAdapter;
private ExpandableListView mExpandableListView;
private AutoCompleteTextView mSearchEditText;
private ImageButton mSearchButton;
private LinearLayout topBar;
View view;
PopupWindow pop;
Button btnSms;
Button btnEmail;
Button btnCall;
// 缓存除了所选联系人所在组的所有组,用在移动联系人上
String groups[];
// 缓存用户所在的组,用在移动联系人上
String mygroupName;
// 长按分组上的 菜单
public static final int MENU_GROUP_ADD = Menu.FIRST;
public static final int MENU_GROUP_DELETE = Menu.FIRST + 1;
public static final int MENU_GROUP_MODIFY = Menu.FIRST + 2;
public static final int MENU_GROUP_ADDCONTACT = Menu.FIRST + 3;
// 长按联系人菜单
public static final int MENU_CONTACTS_DELETE = Menu.FIRST;
public static final int MENU_CONTACTS_MODIFY = Menu.FIRST + 1;
public static final int MENU_CONTACTS_MOVE = Menu.FIRST + 2;
// 联系人各个字段索引
private static final int icon_index = 1;
private static final int name_index = 2;
private static final int description_index = 3;
private static final int telPhone_index = 4;
private static final int email_index = 5;
// 组上groupName字段索引
private static final int groupName_index = 1;
private Cursor groupCursor;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
initLayout();
initMyAdapter();
initPopupWindow();
// 由于程序的背景不是黑色的,若不设置为0,拖动时会出现黑色
mExpandableListView.setCacheColorHint(0);
// 去掉每项下面的黑线(分割线)
mExpandableListView.setDivider(null);
// 自定义组的左边的下拉图标状态变化
mExpandableListView.setGroupIndicator(getResources().getDrawable(
R.drawable.expander_ic_folder));
}
/**
* *******************************各种初始化函数*******************************
*/
private void initLayout() {
/*
* 由于ExpandableListView与其他组件似乎不能直接嵌套在一个 布局文件里面,但是他有个增加头布局和尾布局的方法,我们可以
* 结合LayoutInflater和这个两个方法就可以在含有ExpandableListView 与ListView的布局中添加其他控件了
*/
// 初始化搜索栏布局
topBar = (LinearLayout) getLayoutInflater().inflate(R.layout.top_bar,
null).findViewById(R.id.top_bar);
mSearchEditText = (AutoCompleteTextView) topBar
.findViewById(R.id.search);
mSearchButton = (ImageButton) topBar.findViewById(R.id.add_contact);
// 初始化ExpandableListView布局
mExpandableListView = (ExpandableListView) findViewById(R.id.list);
registerForContextMenu(mExpandableListView);
mExpandableListView.addHeaderView(topBar);
mExpandableListView.setOnTouchListener(mExpandTouchListener);
// 打开数据库
contactsManagerDbAdapter = new ContactsManagerDbAdater(this);
contactsManagerDbAdapter.open();
// 绑定按钮监听
mSearchButton.setOnClickListener(mSearchListener);
mExpandableListView.setOnChildClickListener(mContactClickListener);
}
private void initPopupWindow() {
// 联系人菜单弹出框初始化
view = this.getLayoutInflater().inflate(R.layout.popup_window, null);
pop = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
pop.setOutsideTouchable(true);
btnSms = (Button) view.findViewById(R.id.btnSms);
btnEmail = (Button) view.findViewById(R.id.btnEmail);
btnCall = (Button) view.findViewById(R.id.btnCall);
}
// 给适配器赋值,刷新界面的时候也会用到
public void initMyAdapter() {
// 初始化ExpandableListView数据
groupCursor = contactsManagerDbAdapter.getAllGroups();
startManagingCursor(groupCursor);
// get the groupName column index
groupNameIndex = groupCursor.getColumnIndexOrThrow("groupName");
// set my adapter
myCursorTreeAdapter = new MyCursrTreeAdapter(groupCursor, this, true);
mExpandableListView.setAdapter(myCursorTreeAdapter);
// 初始化搜索框数据
String sql = "select name from contacts";
Cursor contactCursor = contactsManagerDbAdapter.getCursorBySql(sql,
null);
Log.w(TAG, "" + contactCursor.toString());
contactCursor.moveToFirst();
ArrayList<String> nameList = new ArrayList<String>();
for (int i = 0; i < contactCursor.getCount(); i++) {
nameList.add(contactCursor.getString(contactCursor
.getColumnIndex("name")));
contactCursor.moveToNext();
}
contactCursor.close();
// 绑定自动完成框数据
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
ContactsManager.this,
android.R.layout.simple_dropdown_item_1line, nameList);
mSearchEditText.setAdapter(adapter);
}
/**
* *******************************监听器类定义*******************************
*/
// 联系人搜索监听器
private OnClickListener mSearchListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = mSearchEditText.getText().toString();
// String sql="select * from contacts where name=" + name;
String sql = "select name from contacts";
Cursor contactCursor = contactsManagerDbAdapter.getCursorBySql(sql,
null);
Log.w(TAG, "" + contactCursor.toString());
contactCursor.moveToFirst();
for (int i = 0; i < contactCursor.getCount(); i++) {
if (contactCursor.getString(
contactCursor.getColumnIndex("name")).equals(name)) {
Intent intent = new Intent();
intent.putExtra("name", name);
intent.setAction(Intent.ACTION_EDIT);
intent.setDataAndType(Uri.parse(MyConstant.CONTENT_URI),
MyConstant.CONTENT_TYPE_EDIT);
startActivity(intent);
contactCursor.close();
return;
}
contactCursor.moveToNext();
}
contactCursor.close();
Toast.makeText(ContactsManager.this, "没有找到联系人", Toast.LENGTH_LONG)
.show();
}
};
// 联系人详细信息查看按钮
private OnChildClickListener mContactClickListener = new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
TextView name = (TextView) v.findViewById(R.id.name);
//Uri uri = Uri.parse(MyConstant.CONTENT_URI);
//Intent intent = new Intent(Intent.ACTION_EDIT,uri);
Intent intent = new Intent();
intent.setType(MyConstant.CONTENT_TYPE_EDIT);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
阶段项目——android手机通讯录源代码 (144个子文件)
resources.ap_ 488KB
ContactsManager.apk 517KB
EditContact.class 19KB
ContactsManager.class 16KB
ContactsManagerDbAdater.class 8KB
ContactsManager$MyCursrTreeAdapter.class 4KB
EditContact$PhotoListener.class 4KB
ContactsManagerDbAdater$DatabaseHelper.class 3KB
ContactsManager$1.class 3KB
R$drawable.class 3KB
ContactsManager$11.class 3KB
PhotoEditorView.class 3KB
ContactsManager$7.class 2KB
ContactsManager$MyCursrTreeAdapter$1.class 2KB
ContactsManager$MyCursrTreeAdapter$1$1.class 2KB
ContactsManager$MyCursrTreeAdapter$1$2.class 2KB
ContactsManager$MyCursrTreeAdapter$1$3.class 2KB
MyContacts.class 2KB
ContactsManager$2.class 2KB
ContactsManager$6.class 2KB
ContactsManager$9.class 2KB
EditContact$2.class 2KB
EditContact$PhotoListener$2.class 2KB
ContactsManager$4.class 1KB
R$id.class 1KB
EditContact$PhotoListener$1.class 1KB
EditContact$1.class 1KB
ContactsManager$3.class 1KB
EditContact$PhotoListener$3.class 1KB
ContactsManager$10.class 988B
ContactsManager$12.class 988B
ContactsManager$8.class 986B
ContactsManager$13.class 984B
ContactsManager$5.class 963B
EditContact$6.class 958B
ContactsManager$14.class 954B
EditContact$7.class 928B
EditContact$3.class 911B
R$string.class 859B
EditContact$4.class 833B
EditContact$5.class 826B
R.class 651B
MyConstant.class 599B
R$layout.class 593B
R$style.class 425B
R$attr.class 367B
PhotoEditorView$EditorListener.class 284B
.classpath 280B
classes.dex 51KB
ContactsManager.java 23KB
EditContact.java 23KB
ContactsManagerDbAdater.java 9KB
R.java 7KB
PhotoEditorView.java 2KB
MyContacts.java 2KB
MyConstant.java 522B
default_bg_hdpi.png 217KB
default_bg.png 111KB
icon.png 6KB
h020.png 6KB
h015.png 5KB
h010.png 5KB
contact_add_click.png 4KB
contact_add_normal.png 4KB
h012.png 4KB
h001.png 4KB
edit_over.png 4KB
h014.png 4KB
h019.png 4KB
h013.png 3KB
h006.png 3KB
h018.png 3KB
h016.png 3KB
h009.png 3KB
h011.png 3KB
h008.png 3KB
h017.png 3KB
h004.png 3KB
sms_icon.png 3KB
faceback.png 3KB
call_icon.png 3KB
h002.png 2KB
qq_dialog_err_icon.png 2KB
icon.png 2KB
h003.png 2KB
qq_dialog_alert_icon.png 2KB
qq_dialog_default_icon.png 2KB
option_selected.png 2KB
h007.png 2KB
email_icon.png 2KB
edit.png 2KB
btn_check_on_selected.png 1KB
icon.png 1KB
h005.png 1KB
button2_down.png 1KB
input_over.9.png 1KB
btn_check_on_pressed.png 1KB
textfield_pressed.9.png 1KB
login_back.9.png 1KB
btn_check_off_selected.png 1024B
共 144 条
- 1
- 2
jiong056
- 粉丝: 4
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页