activity:
package com.android.fmis.client.activity;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.android.fmis.client.model.Menu;
import com.android.fmis.client.service.MenuService;
import com.android.fmis.client.util.Utils;
public class IndexActivity extends Activity{
private GridView gridview;
List<Menu> menuList;
private ImageView imageItem;
private TextView textItem;
private String role;
private String isChargeMan;
private String UCode;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.index);
initControl();
initData();
}
private void initControl() {
//imageItem = (ImageView) findViewById(R.id.imageItem);
//imageItem.setAlpha(200);
//textItem=(TextView) findViewById(R.id.textItem);
getBundleData();
}
private void getBundleData(){
Bundle b=getIntent().getExtras();
if(b!=null){
UCode=b.getString("UCode");
role=b.getString("role");
isChargeMan=b.getString("isChargeMan");
}
}
private void initData() {
gridview = (GridView) findViewById(R.id.gv_index);
gridview.setSelector(new ColorDrawable(Color.TRANSPARENT));
MenuService service = new MenuService(IndexActivity.this);
menuList = service.getMenuList(role,isChargeMan);
// 生成动态数组,并且转入数据
ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < menuList.size(); i++) {
try {
Menu menu = menuList.get(i);
HashMap<String, Object> map = new HashMap<String, Object>();
Class draw = R.drawable.class;
Field field = draw.getDeclaredField(menu.getIcon());
int icon = field.getInt(menu.getIcon());
map.put("ItemImage", icon);
map.put("ItemText", menu.getName());
lstImageItem.add(map);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
// 生成适配器的ImageItem <====> 动态数组的元素,两者一一对应
SimpleAdapter saImageItems = new SimpleAdapter(this, // 没什么解释
lstImageItem,// 数据来源
R.layout.index_gridview_item,// night_item的XML实现
// 动态数组与ImageItem对应的子项
new String[] { "ItemImage", "ItemText" },
// ImageItem的XML文件里面的一个ImageView,和TextView ID
new int[] { R.id.imageItem, R.id.textItem });
// 添加并且显示
gridview.setAdapter(saImageItems);
// 添加消息处理
gridview.setOnItemClickListener(new ItemClickListener());
}
// 当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件
class ItemClickListener implements OnItemClickListener {
public void onItemClick(AdapterView<?> arg0,// The AdapterView where the
// click happened
View view,// The view within the AdapterView that was clicked
int arg2,// The position of the view in the adapter
long arg3// The row id of the item that was clicked
) {
// 在本例中arg2=arg3
imageItem = (ImageView) view.findViewById(R.id.imageItem);
switch (arg2) {
case 0:
imageItem
.setImageResource(R.drawable.icon);
break;
case 1:
imageItem
.setImageResource(R.drawable.icon1);
break;
case 2:
imageItem
.setImageResource(R.drawable.icon2);
break;
case 3:
imageItem
.setImageResource(R.drawable.icon3);
break;
default:
break;
}
try {
Menu menu = menuList.get(arg2);
if (menu.getActivity() == null || menu.getActivity() == "") {
return;
}
String className = "com.android.fmis.client.activity."
+ menu.getActivity();
Utils.startActivity(IndexActivity.this, Class
.forName(className));
} catch (Exception e) {
// TODO: handle exception
Log.e("IndexActivity", e.getMessage(), e);
e.printStackTrace();
}
}
}
}
service:
package com.android.fmis.client.service;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import com.android.fmis.client.model.Menu;
import android.content.Context;
import android.util.Log;
/**
* 主界面九宫格
* @author Administrator
*
*/
public class MenuService {
private Context context;
private static List<Menu> menuList;
/**
* @param context
*/
public MenuService(Context context) {
this.context = context;
}
/**
*
*/
public static void clean()
{
menuList = null;
}
/**
* @return
*/
public List<Menu> getMenuList(String role,String isChargeMan) {//01教师,03学生,isChargeMan=1教师且部门负责人
if(role.equals("01") && isChargeMan.equals("1")){//教师且负责人
menuList=getMenusFromXml("MenuTeacherPrincipal.xml");
}else if(role.equals("01") && !isChargeMan.equals("1")){//教师非负责人
menuList= getMenusFromXml("MenuTeacher.xml");
}else if(role.equals("03") && !isChargeMan.equals("1")){//学生
menuList=getMenusFromXml("MenuStudent.xml");
}
return menuList;
}
/**
* 参数fileName:为xml文档路径
*/
public List<Menu> getMenusFromXml(String fileName) {
List<Menu> Menus = new ArrayList<Menu>();
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document document = null;
InputStream inputStream = null;
// 首先找到xml文件
factory = DocumentBuilderFactory.newInstance();
try {
// 找到xml,并加载文档
builder = factory.newDocumentBuilder();
inputStream = this.context.getResources().getAssets()
.open(fileName);
document = builder.parse(inputStream);
// 找到根Element
Element root = document.getDocumentElement();
NodeList nodes = root.getElementsByTagName("Menu");
// 遍历根节点所有子节点,Menus 下所有Menu
Menu menu = null;
for (int i = 0; i < nodes.getLength(); i++) {
menu = new Menu();
// 获取Menu元素节点
Element menuElement = (Element) (nodes.item(i));
// 获取Menu中name属性值
menu.setName(menuElement.getAttribute("name"));
menu.setIcon(menuElement.getAttribute("icon"));
menu.setActivity(menuElement.getAttribute("activity"));
// NodeList subNodes = menuElement.getElementsByTagName("SubMenu");
//
// menu.setSubMenuList(new ArrayList<SubMenu>());
//
// for (int n = 0; n < subNodes.getLength(); n++) {
// Element subMenuElement = (Element) (subNodes.item(n));
//
// SubMenu subMenu = new SubMenu();
// subMenu.setName(subMenuElement.getAttribute("name"));
// subMenu.setActivity(subMenuElement.getAttribute("activity"));
//
// menu.getSubMenuList().add(subMenu);
// }
Menus.add(menu);
}
} catch (Exception e){
Log.e("error", e.getMessage(), e);
} finally {
try {
inputStream.close();
} catch(Exception ex) {
}
}
return Menus;
}
}
登录有权限问题,不同用户登录有不同的模块,那么这个就在这里配置了
MenuStdent.xml //学生登录只有学生收费查询
<?xml version="1.0" encoding="utf-8"?>
<Menus>
<Menu name="学生收费查询" icon="icon3" activity="StudentActivity"></Menu>
</Menus>
MenuTeacher.xml //普通教师登录有薪资查询和项目经费查询
<?xml version="1.0" encoding="utf-8"?>
<Menus>
<Menu name="薪资查询" icon="icon" activity="SalaryActivity"></Menu>
<Menu name="项目经费查询" icon="icon1" activity="ProjectActivity"></Menu>
</Menus>
MenuTeacherPrincipal.xml //教师且是部门负责人,有薪资查询,部门经费查询,项目经费查询
<?xml version="1.0" encoding="utf-8"?>
<Menus>
<Menu name="薪资查询" icon="icon" activity="SalaryActivity"></Menu>
<Menu name="项目经费查询" icon="icon1" activity="ProjectActivity"></Menu>
<Menu name="部门经费查询" icon="icon2" activity="DeptActivity"></Menu>
</Menus>