当前位置:  编程技术>移动开发
本页文章导读:
    ▪吐槽-ExpandableListView        吐槽--ExpandableListView    需要把ExpandableListView的适配器(继承自BaseExpandableListAdapter)同时绑定到AutoCompleteTextView,实现搜索过滤功能。实现了接口Filterable,以为成功在即,既然编译抛错误   The g.........
    ▪ o(一)空间复杂度的归并排序        o(1)空间复杂度的归并排序 http://blog.csdn.net/xiaonamylove/article/details/3939965 ......
    ▪ 获取当地图片或拍照图片       获取本地图片或拍照图片 CharSequence[] items = {"相册", "相机"}; new AlertDialog.Builder(this) .setTitle("选择图片来源") .setItems(items, new OnClickListener() { public void onClick(DialogInterface dial.........

[1]吐槽-ExpandableListView
    来源: 互联网  发布时间: 2014-02-18
吐槽--ExpandableListView

   需要把ExpandableListView的适配器(继承自BaseExpandableListAdapter)同时绑定到AutoCompleteTextView,实现搜索过滤功能。实现了接口Filterable,以为成功在即,既然编译抛错误

 

The generic method setAdapter(T) of type AutoCompleteTextView is not applicable for the arguments (MyExpandableListAdapter). The inferred type MyExpandableListAdapter is not a valid substitute for the bounded parameter <T extends ListAdapter & Filterable>	

 MyExpandableListAdapter未实现ListAdapter,跟进BaseExpandableListAdapter最终继承的接口ExpandableListAdapter既然不是ListAdapter的子类!ExpandableListView继承自ListView google既然让它实现不同的适配器,哦!狗屎!

    继续看看setAdapter有两个重载

 

 public void setAdapter(ExpandableListAdapter adapter)
 public void setAdapter(ListAdapter adapter)

如果调用

 public void setAdapter(ListAdapter adapter)

直接就抛异常。看另外一个函数的实现

 

    public void setAdapter(ExpandableListAdapter adapter) {
        // Set member variable
        mAdapter = adapter;
        
        if (adapter != null) {
            // Create the connector
            mConnector = new ExpandableListConnector(adapter);
        } else {
            mConnector = null;
        }
        
        // Link the ListView (superclass) to the expandable list data through the connector
        super.setAdapter(mConnector);
    }

  看,google既然在ExpandableListAdapter和ListAdapter直接做一个链接器来适配ListView。

  ExpandableListView的这种实现方法,虽然可重用listview,但函数setAdapter签名和父类ListView不统一,无疑给调用者添加陷阱和增加复杂度。

  回到上面的问题:如果需要MyExpandableListAdapter同时能够被AutoCompleteTextView做adapter,只好乖乖实现ListAdapter,所以要实现ListAdapter、ExpandableListAdapter两个接口。这么来编译还是不能通过。

For ExpandableListView, use setAdapter(ExpandableListAdapter) instead of " +
                "setAdapter(ListAdapter)

 聪明的java编译器把MyExpandableListAdapter认为是ListAdapter的子类了。怎么办?很简单!一个小技巧让编译器更加聪明点

expandableListView.setAdapter((ExpandableListAdapter)MyExpandableListAdapter);

 至此MyExpandableListAdapter就不仅可以被ExpandableListView使用而且可以被AutoCompleteTextView使用了。

 希望此文对您有用!

 


    
[2] o(一)空间复杂度的归并排序
    来源: 互联网  发布时间: 2014-02-18
o(1)空间复杂度的归并排序

http://blog.csdn.net/xiaonamylove/article/details/3939965


    
[3] 获取当地图片或拍照图片
    来源: 互联网  发布时间: 2014-02-18
获取本地图片或拍照图片
CharSequence[] items = {"相册", "相机"};    
   new AlertDialog.Builder(this)  
    .setTitle("选择图片来源")  
    .setItems(items, new OnClickListener() {  
        public void onClick(DialogInterface dialog, int which) {  
            if( which == SELECT_PICTURE ){  
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  
                intent.addCategory(Intent.CATEGORY_OPENABLE);  
                intent.setType("image/*");  
                startActivityForResult(Intent.createChooser(intent, "选择图片"), SELECT_PICTURE);   
            }else{  
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);    
                startActivityForResult(intent, SELECT_CAMER);    
            }  
        }  
    })  
    .create().show();   


处理图片,方法一,直接处理返回图片:

注释:

1、网上有说明,直接处理返回的图片是被系统压缩过的,不过自己在测试的过程并没有区别;

2、如果用户不断的重新获取图片的话,必须把现在的Bmp内存释放,否则会报错! bmp.recycle()。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);  
    if(resultCode == RESULT_OK){  
        //选择图片  
        Uri uri = data.getData();   
        ContentResolver cr = this.getContentResolver();   
        try {  
            if(bmp != null)//如果不释放的话,不断取图片,将会内存不够  
                bmp.recycle();  
            bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));  
        } catch (FileNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        System.out.println("the bmp toString: " + bmp);  
        imageSV.setBmp(bmp);  
    }else{  
        Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();  
    }  


处理图片,方法二,获得图片的地址再处理:


protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);  
    if(resultCode == RESULT_OK){  
        Uri uri = data.getData();   
        String [] proj={MediaStore.Images.Media.DATA};  
        Cursor cursor = managedQuery( uri,  
                proj,                 // Which columns to return  
                null,       // WHERE clause; which rows to return (all rows)  
                null,       // WHERE clause selection arguments (none)  
                null);                 // Order-by clause (ascending by name)  
          
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);  
        cursor.moveToFirst();  
          
        String path = cursor.getString(column_index);  
        bmp = BitmapFactory.decodeFile(path);  
        System.out.println("the path is :" + path);  
    }else{  
        Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();  
    }  
}  
          
}  

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3