package com.honghe.MyLockers.activity;
import java.io.File;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.base.utils.LogUtil;
import com.base.utils.T;
import com.honghe.R;
import com.honghe.MyLockers.TitleActivity;
import com.honghe.MyLockers.bean.LockersBean;
import com.honghe.MyLockers.db.DBUtil;
import com.honghe.MyLockers.util.ConsUtil;
import com.nostra13.universalimageloader.core.ImageLoader;
public class AddLockersActivity extends TitleActivity implements
OnClickListener {
private ImageView imageView_add_locker;
private EditText editText_lockerName;
private Dialog dialog;
private String cameraPicName;
private LockersBean bean = new LockersBean();
private String EditType = ConsUtil.LockerAdd;
private String lockersId;
@Override
protected void initView() {
addView(View.inflate(this, R.layout.activity_add_lockers, null));
setTitle("添加储物柜");
tvRight.setText("保存");
imageView_add_locker = (ImageView) findViewById(R.id.imageView_add_locker);
editText_lockerName = (EditText) findViewById(R.id.editText_lockerName);
Builder builder = new AlertDialog.Builder(this);
builder.setTitle("选择照片");
builder.setItems(R.array.choosePic, new DialogClickListener());
dialog = builder.create();
imageView_add_locker.setImageResource(R.drawable.imageposition);
}
@Override
protected void initData() {
if (null != getIntent()) {
lockersId = getIntent().getStringExtra("lockersId");
}
if (null == lockersId) {
EditType = ConsUtil.LockerAdd;
setTitle("添加储物柜");
tvRight.setText("添加");
} else if (null != lockersId) {
EditType = ConsUtil.LockerEdit;
setTitle("修改储物柜");
tvRight.setText("保存");
getLocker();
}
}
/**
* 获取储物柜详情
*/
private void getLocker() {
bean = DBUtil.getLockersBean(this, lockersId);
if (null != bean) {
ImageLoader.getInstance().displayImage("file://" + bean.ImageUri,
imageView_add_locker);
editText_lockerName.setText(bean.LockersName);
} else {
T.showLong(this, "获取储物柜详情失败!");
}
}
@Override
protected void setListener() {
rvLeft.setOnClickListener(this);
rvRight.setOnClickListener(this);
imageView_add_locker.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rv_title_left:
finish();
break;
case R.id.rv_title_right:
// 保存
if (EditType.equals(ConsUtil.LockerAdd)) {
addLocker();
} else if (EditType.equals(ConsUtil.LockerEdit)) {
editLocker();
}
break;
case R.id.imageView_add_locker:
// 修改图片
dialog.show();
break;
default:
break;
}
}
private void addLocker() {
String picPath = bean.ImageUri;
String name = editText_lockerName.getText().toString().trim();
if (null != picPath && !TextUtils.isEmpty(name)) {
bean.LockersName = name;
bean.lockersid = System.currentTimeMillis() + "";
try {
DBUtil.addLockersBean(this, bean);
setResult(RESULT_OK);
finish();
T.showLong(this, "添加储物箱成功!");
} catch (Exception e) {
T.showLong(this, "添加储物箱失败!");
LogUtil.e("增加储物箱失败!");
e.printStackTrace();
}
} else {
T.showLong(this, "未选择图片或名称不能为空");
}
}
private void editLocker() {
String picPath = bean.ImageUri;
String name = editText_lockerName.getText().toString().trim();
if (null != picPath && !TextUtils.isEmpty(name)) {
bean.LockersName = name;
bean.lockersid = lockersId;
try {
int isSucess = DBUtil.updateLockersBean(this, bean);
if (isSucess == 0) {
T.showLong(this, "修改储物箱失败!");
LogUtil.e("修改储物箱失败!");
} else {
T.showLong(this, "修改储物箱成功!");
setResult(RESULT_OK);
finish();
}
} catch (Exception e) {
T.showLong(this, "修改储物箱失败!");
LogUtil.e("修改储物箱失败!");
e.printStackTrace();
}
} else {
T.showLong(this, "未选择图片或名称不能为空");
}
}
private class DialogClickListener implements
DialogInterface.OnClickListener {
Intent intent;
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
cameraPicName = System.currentTimeMillis() + ".jpeg";
ConsUtil.createAppDir(AddLockersActivity.this);
File photofile = new File(ConsUtil.picPath + cameraPicName);
Uri uri = Uri.fromFile(photofile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, 0);
dialog.dismiss();
break;
case 1:
intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
startActivityForResult(intent, 1);
dialog.dismiss();
break;
default:
break;
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
// 从相机返回
File picFile = new File(ConsUtil.picPath + cameraPicName);
if (picFile.exists()) {
ImageLoader.getInstance().displayImage(
"file://" + Uri.fromFile(picFile).getPath(),
imageView_add_locker);
bean.ImageUri = picFile.getPath();
}
} else if (requestCode == 1) {
// 从相册返回
if (resultCode == RESULT_OK) {
// 外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口
ContentResolver resolver = getContentResolver();
Uri originalUri = data.getData(); // 获得图片的uri
String[] proj = { MediaStore.Images.Media.DATA };
// 好像是android多媒体数据库的封装接口,具体的看Android文档
Cursor cursor = managedQuery(originalUri, proj, null, null,
null);
// 按我个人理解 这个是获得用户选择的图片的索引值
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
// 将光标移至开头 ,这个很重要,不小心很容易引起越界
cursor.moveToFirst();
// 最后根据索引值获取图片路径
String path = cursor.getString(column_index);
ImageLoader.getInstance().displayImage("file://" + path,
imageView_add_locker);
bean.ImageUri = path;
} else {
Toast.makeText(this, "请重新选择图片", Toast.LENGTH_SHORT).show();
}
}
}
}