android listview上传图片

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());
            }
        }
        }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值