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;// 显示所有数据的ListView
SimpleAdapter adapter;
ArrayList<Integer> deleteId;// 删除项的ID
public 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() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
if (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);//
// 获取第二个imageView
if (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));// 设置底部菜单的Adapter
buttomMenuGrid.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;
}
}
}