package com.example.sharingcontact;
import java.util.ArrayList;
import com.example.sharingcontact.AddActivity.ImageAdapter;
import com.example.sharingcontact.UpdateActivity.contact;
import com.example.sharingcontact.db.ContactInfo;
import com.example.sharingcontact.db.Contacts;
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.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ViewSwitcher.ViewFactory;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
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.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ImageView.ScaleType;
import android.widget.ViewSwitcher.ViewFactory;
public class ModifyActivity extends Activity implements ViewFactory{
EditText et_name;
EditText et_telePhone;
EditText et_phone;
EditText et_nickname;
EditText et_company;
EditText et_address;
int id;
Button btn_save;
Button btn_return;
Button btn_delete;
TextView tv_title;
Button btn_message;
Button btn_dial;
ContactInfo user;
//头像的按钮
ImageButton imageButton;
//用flag来判断按钮的状态 false表示查看点击修改状态 true表示点击修改保存状态
boolean flag = false;
boolean imageChanged = false;
boolean isDataChanged = false;
int currentImagePosition;
int previousImagePosition;
String[] callData;
//表示状态:打电话,发短信,发邮件
String status;
//拥有一个user实例,这个对象由Intent传过来
Gallery gallery;
ImageSwitcher is;
View numChooseView;
View imageChooseView;
//号码选择的对话框
AlertDialog numChooseDialog;
AlertDialog imageChooseDialog =null;
/**
* 所有的图像图片
*/
private int[] images
= new int[]{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,R.drawable.image11,R.drawable.image12
,R.drawable.image13,R.drawable.image14,R.drawable.image15
,R.drawable.image16,R.drawable.image17,R.drawable.image18
,R.drawable.image19,R.drawable.image20,R.drawable.image21
,R.drawable.image22,R.drawable.image23,R.drawable.image24
,R.drawable.image25,R.drawable.image26,R.drawable.image27
,R.drawable.image28,R.drawable.image29,R.drawable.image30};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在标题上添加按钮
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.modify);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titleitem);
//默认不弹出软键盘
getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
final TextView tv_title = (TextView) findViewById(R.id.tv_title);
tv_title.setText("联系人列表");
//获得意图
Intent intent = getIntent();
//从意图中得到需要的user对象
user = (ContactInfo) intent.getSerializableExtra("user");
loadUserData();
setEditTextDisable();
//为按钮添加监听类
btn_delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
deleteat();
}
});
btn_save.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
if(!flag) {
btn_save.setText("保存");
setEditTextAble();
setColorToBlack();
flag = true;
tv_title.setText("修改联系人");
} else {
//往数据库里面更新数据
modify();
finish();
setEditTextDisable();
setColorToGray();
btn_save.setText("修改");
tv_title.setText("联系人详情");
flag = false;
}
}});
btn_return.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
//返回键
imageButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
loadImage();//为gallery装载图片
initImageChooseDialog();//初始化imageChooseDialog
imageChooseDialog.show();
}
});
btn_message.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
status = Intent.ACTION_SENDTO;
if(callData == null) {
loadAvailableCallData();
}
if(callData.length == 0) {
//提示没有可用的号码
Toast.makeText(ModifyActivity.this, "没有可用的号码!", Toast.LENGTH_LONG).show();
} else if(callData.length == 1) {
//如果之后又一个可用的号码,这直接使用这个号码拨出
Intent intent =
new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto://" + callData[0]));
startActivity(intent);
} else {
initNumChooseDialog();
}
}
});
btn_dial.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
//将状态设置为打电话
status = Intent.ACTION_CALL;
if(callData == null) {
//加载可用的号码
loadAvailableCallData();
}
if(callData.length == 0) {
//提示没有可用的号码
Toast.makeText(ModifyActivity.this, "没有可用的号码!", Toast.LENGTH_LONG).show();
} else if(callData.length == 1) {
//如果之有一个可用的号码,这直接使用这个号码拨出
Intent intent =
new Intent(Intent.ACTION_CALL,Uri.parse("tel://" + callData[0]));
startActivity(intent);
} else {
//如果有2个或者2个以上号码,弹出号码选择对话框
initNumChooseDialog();
}
}
});
}
//短信或者电话功能
public void loadAvailableCallData() {
ArrayList<String> callNums = new ArrayList<String>();
if(!user.MobileTel.equals("")) {
callNums.add(user.MobileTel);
}
if(!user.FixedTel.equals("")) {
callNums.add(user.FixedTel);
}
callData = new String[callNums.size()];
for(int i=0;i<callNums.size();i++) {
callData[i] = callNums.get(i);
}
}
public void initNumChooseDialog() {
if(numChooseDialog == null) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = LayoutInflater.from(this);
numChooseView = inflater.inflate(R.layout.numchoose, null);
ListView lv = (ListView)numChooseView.findViewById(R.id.num_list);
ArrayAdapter array =
new ArrayAdapter(this,android.R.layout.simple_list_item_1,callData);
lv.setAdapter(array);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
String num = String.valueOf(arg0.getItemAtPosition(arg2));
Intent intent = null;
if(status.equals(Intent.ACTION_CALL)) {
intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel://" + num));
} else {
intent = new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto://" + num));
}
startActivity(intent);
//对话框消失
numChooseDialog.dismiss();
}});
builder.setView(numChooseView);
numChooseDialog = builder.create();
}
numChooseDialog.show();
}
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(flag) {
Dialog dialog = new AlertDialog.Builder(ModifyActivity.this) // 实例化对象
//.setIcon(R.drawable.pic_m) // 设置显示图片
.setMessage("是否保存联系人?") // 设置显示内容
.setPositiveButton("确定", // 增加一个确定按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
modify();
flag=false;
finish();
}
}).setNegativeButton("取消", // 增加取消按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
finish();
}
}).create(); // 创建Dialog
dialog.show();
// 显示对话框
}
}
return super.onKeyDown(keyCode, event);
}
public void loadImage() {
if(imageChooseView == null) {
LayoutInflater li = LayoutInflater.from(ModifyActivity.this);
imageChooseView = li.inflate(R.layout.imageswitch, null);
gallery = (Gallery)imageChooseView.findViewById(R.id.img_gallery);
// gallery.setAdapter(adapter);
gallery.setAdapter(new ImageAdapter(ModifyActivity.this));
gallery.setSelection(images.length/2);
is = (ImageSwitcher)imageChooseView.findViewById(R.id.image_switcher);
is.setFactory(this);
gallery.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
currentImagePosition = arg2 % images.length;
is.setImageResource(images[arg2 % images.length]);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}});
}
}
/**
* 自定义Gallery的适配器
*/
class ImageAdapter extends BaseAdapter {
private Context context;
public ImageAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
/**
* gallery从这个方法中拿到image
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
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;
}
}
@Override
public View makeView() {
ImageView view = new ImageView(this);
view.setBackgroundColor(0xff000000);
view.setScaleType(ScaleType.FIT_CENTER);
view.setLayoutParams(new ImageSwitcher.LayoutParams(90,90));
return view;
}
public void initImageChooseDialog() {
if(imageChooseDialog == null) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("请选择图像")
.setView(imageChooseView).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
imageChanged = true;
previousImagePosition = currentImagePosition;
imageButton.setImageResource(images[currentImagePosition%images.length]);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
currentImagePosition = previousImagePosition;
}
});
imageChooseDialog = builder.create();
}
}
/**
* 获得布局文件中的控件,并且根据传递过来user对象对控件进行赋值
*/
public void loadUserData() {
// 获得EditText控件
et_name = (EditText)findViewById(R.id.name);
et_nickname = (EditText) findViewById(R.id.nickname);
et_phone = (EditText)findViewById(R.id.phone);
et_telePhone = (EditText)findViewById(R.id.telephone);
et_company = (EditText)findViewById(R.id.company);
et_address = (EditText)findViewById(R.id.address);
// 获得Button控件
btn_delete = (Button) findViewById(R.id.delete);
btn_save = (Button) findViewById(R.id.btn_titlesave);
btn_return = (Button)findViewById(R.id.btn_titlecancle);
tv_title = (TextView) findViewById(R.id.tv_title);
imageButton = (ImageButton)findViewById(R.id.image_button);
btn_message = (Button) findViewById(R.id.message);
btn_dial = (Button) findViewById(R.id.dial);
// editText.setFocusableInTouchMode(true);
// editText.requestFocus();
// 为控件赋值
btn_save.setText("修改");
tv_title.setText("联系人详情");
et_name.setText(user.Name);
et_nickname.setText(user.SubName);
et_phone.setText(user.MobileTel);
et_telePhone.setText(user.FixedTel);
et_company.setText(user.Company);
et_address.setText(user.Address);
imageButton.setImageResource(user.ImageId);
}
/**
* 设置EditText为不可用
*/
private void setEditTextDisable() {
et_name.setEnabled(false);
et_nickname.setEnabled(false);
et_phone.setEnabled(false);
et_telePhone.setEnabled(false);
et_company.setEnabled(false);
et_address.setEnabled(false);
imageButton.setEnabled(false);
setColorToGray();
}
/**
* 设置EditText为可用状态
*/
private void setEditTextAble() {
et_name.setEnabled(true);
et_nickname.setEnabled(true);
et_phone.setEnabled(true);
et_telePhone.setEnabled(true);
et_company.setEnabled(true);
et_address.setEnabled(true);
imageButton.setEnabled(true);
//setColorToBlack();
}
/**
* 设置显示的字体颜色为黑色
*/
private void setColorToBlack() {
et_name.setTextColor(Color.BLACK);
et_nickname.setTextColor(Color.BLACK);
et_phone.setTextColor(Color.BLACK);
et_telePhone.setTextColor(Color.BLACK);
et_company.setTextColor(Color.BLACK);
et_address.setTextColor(Color.BLACK);
}
/**
* 设置显示的字体颜色为白色
*/
private void setColorToGray() {
et_name.setTextColor(Color.GRAY);
et_nickname.setTextColor(Color.GRAY);
et_phone.setTextColor(Color.GRAY);
et_telePhone.setTextColor(Color.GRAY);
et_company.setTextColor(Color.GRAY);
et_address.setTextColor(Color.GRAY);
}
/**
* 获得最新数据,创建Contactinfo对象,更新数据库
*/
private void modify() {
Log.d("先前", user.MobileTel);
user.Name = et_name.getText().toString();
user.SubName = et_nickname.getText().toString();
user.MobileTel = et_phone.getText().toString();
user.FixedTel = et_telePhone.getText().toString();
user.Company = et_company.getText().toString();
user.Address = et_address.getText().toString();
if(imageChanged) {
user.ImageId = images[currentImagePosition%images.length];
}
Contacts c = new Contacts(ModifyActivity.this);
c.updateContacts(user);
Log.d("后来", user.MobileTel);
}
public void deleteat(){
int id = user.ContactID;
Contacts c = new Contacts(ModifyActivity.this);
c.deleteContacts(id);
finish();
Toast toast=Toast.makeText(getApplicationContext(), user.Name+" 已删除", Toast.LENGTH_SHORT);
toast.show();
}
}
1万+

被折叠的 条评论
为什么被折叠?



