package com.zxc.wzry;
public class SkillActivity extends Activity implements OnItemClickListener {
//定义网格视图
GridView gv;
List<Skill> skills;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_skill);
gv=(GridView) findViewById(R.id.skill_list);
//获取数据源中的技能列表
skills=DBUtil.readFile("/db/skill.txt");
// Toast.makeText(this, skills.toString()+"",3000).show();
//准备数据源
List<HashMap<String, Object>> data =getDatas();
int[] ids={R.id.skill_item_img,R.id.skill_item_name};
String[] names ={"img","name"};
//定义适配器,将数据源匹配到容器中
// SimpleAdapter(this, 数据源, 子布局文件, names, ids);
SimpleAdapter adapter =new SimpleAdapter(this, data,
R.layout.skill_item, names, ids);
//将适配器添加到网格视图中
gv.setAdapter(adapter);
//给网格视图添加点击事件
gv.setOnItemClickListener(this);
//让适配器加载图片
adapter.setViewBinder(new ViewBinder() {
@Override
public boolean setViewValue(View view, Object data, String arg2) {
//如果传过来的视图是图片视图
//并且传过来的数据是BitMap图片
if(view instanceof ImageView && data instanceof Bitmap){
//将试图转换为图片视图
ImageView iv =(ImageView) view;
//将数据转换为Bitmap数据
//并设置到图片视图中
iv.setImageBitmap((Bitmap)data);
return true;
}
return false;
}
});
}
/**
*准备数据源
*@author Administrator
*/
private List<HashMap<String, Object>> getDatas() {
// TODO Auto-generated method stub
List<HashMap<String, Object>> data=
new ArrayList<HashMap<String,Object>>();
for(Skill skill:skills){
HashMap<String, Object> map=new HashMap<String, Object>();
//封装技能名称
map.put("name", skill.getSkName());
//封装图片
Bitmap img =getImg("jn/"+skill.getSkImg());
map.put("img", img);
data.add(map);
}
return data;
}
/**
* 根据图片名称获取图片
* @param string
* @return
*/
private Bitmap getImg(String string) {
// TODO Auto-generated method stub
Bitmap img=null;
//应为图片放在assets文件夹下
//所以需要先获取该文件的管理权限
AssetManager as =
this.getResources().getAssets();
try {
//利用Io流将文件图片输入到程序中
InputStream is =as.open(string);
//利用图片工厂,将IO流解析成BItmap格式
img= BitmapFactory.decodeStream(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return img;
}
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2,
long arg3) {
// TODO Auto-generated method stub
//获取点击的组件上的文本视图
TextView tv= (TextView) view.findViewById(R.id.skill_item_name);
//获取文本视图中的文字内容
String name =tv.getText().toString();
//根据名称从列表中找到指定的数据
for (Skill skill :skills) {
if(name.equals(skill.getSkName())){
//将技能数据跟新到界面上
//获取显示技能名称的文本视图
TextView v= (TextView) findViewById(R.id.sk_name);
//将技能的名称设置到此视图中
v.setText(skill.getSkName());
ImageView iv =(ImageView) findViewById(R.id.sk_image);
//将技能图片显示到此视图中
Bitmap img =getImg("jn/"+skill.getInfoImg());
iv.setImageBitmap(img);
TextView limitView=(TextView) findViewById(R.id.sk_level_limit);
limitView.setText(skill.getLvLimit());
TextView infoView = (TextView) findViewById(R.id.sk_info);
infoView.setText(skill.getContent());
}
}
}
}