package cn.android.mytaobao.activity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.android.mytaobao.R;
import cn.android.mytaobao.R.layout;
import cn.android.mytaobao.dao.biz.ProductManager;
import cn.android.mytaobao.dao.biz.UserManager;
import cn.android.mytaobao.model.Product;
import cn.android.mytaobao.model.User;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends ListActivity {
private Context context = null;
private LayoutInflater inflater = null;
private User loginUser = null;
private UserManager userManager = null;
// 定义一些创建对话框类型的标志
private static final int DIALOG_EXIT = -1; // 代表按下返回健弹出的对话框
private static final int DIALOG_LOGIN = 1; // 代表是登录对话框
private static final int DIALOG_REG = 2; // 代表用户注册对话框
// 定义关于ListView相关常量
private static final int PAGESIZE = 5; // 每次取几条记录
private int pageIndex = 0; // 用于保存当前是第几页,0代表第一页
private ProductManager productManager = null;
private List<Product> products = null;
private ListView lvProduct = null;
private MyAdapter adapter = null;
protected Menu myMenu;
public static Map<Integer, Boolean> isSelected;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init(); // 系统初使化
showDialog(DIALOG_LOGIN); // 调出登录对话框
// setContentView(R.layout.main);
// showDialog(DIALOG_REG);
}
/**
* 初使化系统数据
*/
private void init() {
context = this;
this.inflater = LayoutInflater.from(this);
userManager = new UserManager();
pageIndex = 0;
}
/**
* 初始化系统界面
*/
private void initMainUI() {
productManager = new ProductManager();
products = productManager.getProdcutByPager(pageIndex, PAGESIZE);
lvProduct = getListView();
// setContentView(R.layout.main);
adapter = new MyAdapter(context);
lvProduct.setItemsCanFocus(true);
setListAdapter(adapter);
lvProduct.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch ((int) id) {
case -1: // 添加
Tool.ShowMessage(context, "添加!");
break;
case -2: // 更多
adapter.more();
break;
default:
// Tool.ShowMessage(context, id "");
ViewHolder viewHolder = (ViewHolder) view.getTag();
// CheckBox chkIn = (CheckBox)
// view.findViewById(R.id.chkIn);
if (viewHolder.cBox != null) {
viewHolder.cBox.toggle();
Tool.ShowMessage(context, id "");
isSelected.put(position - 1,
viewHolder.cBox.isChecked());
}
break;
}
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = this.buildDialog(id);
return dialog;
}
/**
* 根据不同的ID创建不同的对话框
*
* @param flag
* @return
*/
private Dialog buildDialog(int flag) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
switch (flag) {
case DIALOG_LOGIN:
createLoginDialog(builder);
break;
case DIALOG_EXIT:
createExitDialog(builder);
break;
case DIALOG_REG:
createRegistDialog(builder);
break;
default:
break;
}
return builder.create();
}
/**
* 创建退出系统询问builder对象
*
* @param builder
*/
private void createExitDialog(AlertDialog.Builder builder) {
builder.setTitle("警告").setIcon(R.drawable.flag)
.setMessage("您确定要退出系统吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).setNegativeButton("取消", null);
}
/**
* 创建登录对话框的builder对象
*
* @param builder
*/
private void createLoginDialog(AlertDialog.Builder builder) {
View v = inflater.inflate(R.layout.login_ui, null);
builder.setTitle("登录").setIcon(R.drawable.flag).setView(v);
Button btnLogin = (Button) v.findViewById(R.id.btnLogin);
final EditText edtUserId = (EditText) v.findViewById(R.id.edtUserId);
final EditText edtPassWord = (EditText) v
.findViewById(R.id.edtPassWord);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loginUser = userManager.Login(edtUserId.getText().toString(),
edtPassWord.getText().toString());
if (loginUser != null) {
dismissDialog(DIALOG_LOGIN);
initMainUI();
} else {
Tool.ShowMessage(context, "帐号或密码有误,登录失败!");
}
}
});
Button btnExit = (Button) v.findViewById(R.id.btnExit);
btnExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
TextView linkReg = (TextView) v.findViewById(R.id.linkReg);
linkReg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Tool.ShowMessage(context, "test");
showDialog(DIALOG_REG);
}
});
}
private String getCheckCode() {
String strInt = " ";
Integer i = new Integer((int) (Math.random() * 100000000));
strInt = String.valueOf(i);
if (strInt.length() != 8) {
return getCheckCode();
} else {
return strInt;
}
}
/**
* 创建注册用户对话框的builder对象
*
* @param builder
*/
private void createRegistDialog(AlertDialog.Builder builder) {
View v = inflater.inflate(R.layout.reg_ui, null);
builder.setTitle("注册").setIcon(R.drawable.flag).setView(v);
Button btnReg = (Button) v.findViewById(R.id.btnRegister);
final EditText edtUserId = (EditText) v.findViewById(R.id.edtUserId);
final EditText edtPassWord = (EditText) v
.findViewById(R.id.edtPassWord);
final EditText edtChkCode = (EditText) v.findViewById(R.id.edtChkCode);
final TextView txtChkCode = (TextView) v.findViewById(R.id.txtChkCode);
txtChkCode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((TextView) v).setText(getCheckCode());
}
});
btnReg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!txtChkCode.getText().toString()
.equals(edtChkCode.getText().toString())) {
Tool.ShowMessage(context, "验证码输入有误,请重新输入!");
String chkcode = getCheckCode();
txtChkCode.setText(chkcode);
return;
}
User user = new User(edtUserId.getText().toString(),
edtPassWord.getText().toString());
User result = userManager.Register(user);
if (result != null) {
dismissDialog(DIALOG_REG);
} else {
Tool.ShowMessage(context, "注册用户失败!");
String chkcode = getCheckCode();
txtChkCode.setText(chkcode);
}
}
});
Button btnExit = (Button) v.findViewById(R.id.btnExit);
btnExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// finish();
dismissDialog(DIALOG_REG);
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (adapter != null && adapter.isBatManager()) {
adapter = new MyAdapter(context, R.layout.productitem);
setListAdapter(adapter);
isSelected = new HashMap<Integer, Boolean>();
for (int i = 0; i < products.size(); i ) {
isSelected.put(i, false);
}
if (myMenu != null) {
onCreateOptionsMenu(myMenu);
}
return true;
} else {
showDialog(DIALOG_EXIT);
return true;
}
}
return false;
}
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
if (id == DIALOG_REG) {
String chkcode = getCheckCode();
TextView tv = (TextView) dialog.findViewById(R.id.txtChkCode);
tv.setText(chkcode);
}
}
/**
* 自定义Adapter
*
* @author jhao
* @version 1.0
*/
class MyAdapter extends BaseAdapter {
private Context context;
private int item_layout_res = R.layout.productitem;
public MyAdapter(Context context) {
this.context = context;
}
public MyAdapter(Context context, int res) {
this.context = context;
this.item_layout_res = res;
}
public boolean isBatManager() {
return this.item_layout_res == R.layout.productitem2;
}
public void refresh() {
notifyDataSetChanged();
}
public void more() {
pageIndex ;
List<Product> moreProduct = productManager.getProdcutByPager(
pageIndex, PAGESIZE);
if (moreProduct != null) {
products.addAll(moreProduct);
notifyDataSetChanged();
} else {
Tool.ShowMessage(context, "没有数据可供加载!");
}
}
public void changeUI(int item_layout_res) {
this.item_layout_res = item_layout_res;
notifyDataSetChanged();
}
@Override
public int getCount() {
return products.size() 2;
}
@Override
public Object getItem(int position) {
return products.get(position - 1);
}
@Override
public long getItemId(int position) {
// return products.get(position - 1).getId();
if (position == 0)// 选中第一项
{
return -1;// 代表点击的是第一项
} else if (position > 0 && (position < this.getCount() - 1)) {
return products.get(position - 1).getId();// 如果用户选中了中间项
// mUserList.get(index-1).getId();
} else {
return -2;// 表示用户选中最后一项
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// View view ;
// 说明是第一项
if (position == 0) {
convertView = inflater.inflate(R.layout.addproductitem, null);
return convertView;
}
// 说明是最后一项
if (position == this.getCount() - 1) {
convertView = inflater.inflate(R.layout.moreitemsview, null);
return convertView;
}
ViewHolder holder = null;
if (convertView == null
|| convertView.findViewById(R.id.addproduct) != null
|| convertView.findViewById(R.id.linemore) != null) {
/*
* convertView = inflater.inflate(R.layout.productitem, parent,
* false);
*/
/*
* convertView = inflater.inflate(R.layout.productitem2, parent,
* false);
*/
holder = new ViewHolder();
convertView = inflater.inflate(this.item_layout_res, parent,
false);
holder.img = (ImageView) convertView
.findViewById(R.id.imgPhoto);
holder.title = (TextView) convertView
.findViewById(R.id.txtName);
holder.unitPrice = (TextView) convertView
.findViewById(R.id.txtUnitPrice);
holder.cBox = convertView.findViewById(R.id.chkIn) == null ? null
: (CheckBox) convertView.findViewById(R.id.chkIn);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.img.setImageResource(products.get(position - 1).getPhoto());
holder.title.setText(position "、"
products.get(position - 1).getName().toString());
holder.unitPrice.setText(String.valueOf(products.get(position - 1)
.getUnitPrice()));
if (holder.cBox != null)
holder.cBox.setChecked(isSelected.get(position - 1));
return convertView;
}
}
public final class ViewHolder {
public ImageView img;
public TextView title;
public TextView unitPrice;
public CheckBox cBox;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
myMenu = menu;
myMenu.clear();
if (adapter.isBatManager()) {
myMenu.add(1, 4, 1, "全选").setIcon(R.drawable.menu_all_select);
myMenu.add(1, 5, 2, "全消").setIcon(R.drawable.menu_all_unselect);
myMenu.add(1, 6, 3, "批量删除").setIcon(R.drawable.menu_delete_list);
} else {
myMenu.add(1, 1, 1, "批量管理").setIcon(R.drawable.menu_bat_manage);
myMenu.add(1, 2, 2, "搜索").setIcon(R.drawable.ic_menu_search);
myMenu.add(1, 3, 3, "按价格排序").setIcon(R.drawable.ic_menu_sort);
}
return super.onCreateOptionsMenu(myMenu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
adapter = new MyAdapter(context, R.layout.productitem2);
setListAdapter(adapter);
isSelected = new HashMap<Integer, Boolean>();
for (int i = 0; i < products.size(); i ) {
isSelected.put(i, false);
}
if (myMenu != null) {
onCreateOptionsMenu(myMenu);
}
break;
case 2:
break;
case 3:
break;
case 4:
// Tool.ShowMessage(context, "全选");
for (int i = 0; i < products.size(); i ) {
isSelected.put(i, true);
}
adapter.refresh();
break;
case 5:
for (int i = 0; i < products.size(); i ) {
isSelected.put(i, false);
}
adapter.refresh();
break;
case 6:
new AlertDialog.Builder(context)
.setIcon(R.drawable.flag).setTitle("警告").setMessage("您确定要删除这些商品吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
List<Integer> ids = new ArrayList<Integer>();
for (int i = 0; i < products.size(); i ) {
if (isSelected.get(i)) {
ids.add(products.get(i).getId());
}
}
boolean isOk = productManager.DelProduct(ids);
if (isOk) {
pageIndex = 0;
products = productManager
.getProdcutByPager(pageIndex, PAGESIZE);
Tool.ShowMessage(context, "删除成功!");
adapter = new MyAdapter(context, R.layout.productitem);
setListAdapter(adapter);
isSelected = new HashMap<Integer, Boolean>();
for (int i = 0; i < products.size(); i ) {
isSelected.put(i, false);
}
if (myMenu != null) {
onCreateOptionsMenu(myMenu);
}
} else {
Tool.ShowMessage(context, "删除失败!");
}
}}).setNegativeButton("取消", null).create().show();
break;
}
return super.onOptionsItemSelected(item);
}
/*
* @Override public void onBackPressed() { // TODO Auto-generated method
* stub Tool.ShowMessage(context, "ok"); super.onBackPressed(); }
*/
}


评论