当前位置:  编程技术>移动开发
本页文章导读:
    ▪根据产品价格或者销售量查询的排序算法-小弟我所开发程序遇到的有关问题        根据产品价格或者销售量查询的排序算法-------我所开发程序遇到的问题- (NSMutableArray *)compareList:(NSMutableArray *)list IS_UP:(BOOL)isUp IS_PRICE:(BOOL)isPrice {     NSMutableArray *finalList = [[[NSMutableArray alloc] i.........
    ▪ 黑客在大会显示破解Wi-Fi的间谍飞机        黑客在大会展示破解Wi-Fi的间谍飞机 黑帽安全技术大会是世界上最好的能够了解未来安全趋势的信息峰会。 专业的黑客、极客,安全防范公司研究人员,政府部门的代表,IT新闻记者,几乎.........
    ▪ menu 的用法       menu 的用法.1. 简单的代码 1. public static final int ITEM_1_ID = Menu.FIRST; 2. public static final int ITEM_2_ID = Menu.FIRST + 1; 3. public static final int ITEM_3_ID = Menu.FIRST + 2; 4.      5. public boole.........

[1]根据产品价格或者销售量查询的排序算法-小弟我所开发程序遇到的有关问题
    来源: 互联网  发布时间: 2014-02-18
根据产品价格或者销售量查询的排序算法-------我所开发程序遇到的问题

- (NSMutableArray *)compareList:(NSMutableArray *)list IS_UP:(BOOL)isUp IS_PRICE:(BOOL)isPrice

{

    NSMutableArray *finalList = [[[NSMutableArray alloc] init] autorelease];

    if (isPrice == YES) {

        

        NSMutableArray *RecommandCloth_list = [[NSMutableArray alloc] initWithArray:list];

        int count = RecommandCloth_list.count;

        NSLog(@"count:%d",count);

        RecommandClothItem * tempRecommand_small;

        RecommandClothItem * tempRecommand;

        

        while (RecommandCloth_list.count > 0) {

         

            tempRecommand_small = [RecommandCloth_list objectAtIndex:0];

            for (int i=1; i<RecommandCloth_list.count; i++) {

                tempRecommand = [RecommandCloth_list objectAtIndex:i];

                NSLog(@"tempRecommand.price:%@",tempRecommand.price);

                NSLog(@"tempRecommand_small.price:%@",tempRecommand_small.price);

                if (isUp == YES) {

                    if (tempRecommand.price.intValue < tempRecommand_small.price.intValue) {

                        tempRecommand_small = tempRecommand;

                    }

                }

                else {

                    if (tempRecommand.price.intValue > tempRecommand_small.price.intValue) {

                        tempRecommand_small = tempRecommand;

                    }


                }

            }

            [finalList addObject:tempRecommand_small];

            

            for (int j = 0; j<RecommandCloth_list.count;j++) {

                

                RecommandClothItem *temp_RecommandClothItem = [RecommandCloth_list objectAtIndex:j];

                if ([tempRecommand_small.recommandCloth_id isEqualToString:temp_RecommandClothItem.recommandCloth_id]) {

                    [RecommandCloth_list removeObject:temp_RecommandClothItem];

                }

            }

            NSLog(@"RecommandCloth_list.count:%d",RecommandCloth_list.count);

        }

        

    }

    else{

        NSMutableArray *RecommandCloth_list = [[NSMutableArray alloc] initWithArray:list];

        int count = RecommandCloth_list.count;

        NSLog(@"count:%d",count);

        RecommandClothItem * tempRecommand_small;

        RecommandClothItem * tempRecommand;

        

        while (RecommandCloth_list.count > 0) {

            

            tempRecommand_small = [RecommandCloth_list objectAtIndex:0];

            for (int i=1; i<RecommandCloth_list.count; i++) {

                tempRecommand = [RecommandCloth_list objectAtIndex:i];

                NSLog(@"tempRecommand.price:%@",tempRecommand.price);

                NSLog(@"tempRecommand_small.price:%@",tempRecommand_small.price);

                if (isUp == YES) {

                    if (tempRecommand.sales_volume.intValue < tempRecommand_small.sales_volume.intValue) {

                        tempRecommand_small = tempRecommand;

                    }

                }

                else {

                    if (tempRecommand.sales_volume.intValue > tempRecommand_small.sales_volume.intValue) {

                        tempRecommand_small = tempRecommand;

                    }

                    

                }

            }

            [finalList addObject:tempRecommand_small];

            

            for (int j = 0; j<RecommandCloth_list.count;j++) {

                

                RecommandClothItem *temp_RecommandClothItem = [RecommandCloth_list objectAtIndex:j];

                if ([tempRecommand_small.recommandCloth_id isEqualToString:temp_RecommandClothItem.recommandCloth_id]) {

                    [RecommandCloth_list removeObject:temp_RecommandClothItem];

                }

            }

            NSLog(@"RecommandCloth_list.count:%d",RecommandCloth_list.count);

        }

    }

    return finalList;

}


    
[2] 黑客在大会显示破解Wi-Fi的间谍飞机
    来源: 互联网  发布时间: 2014-02-18
黑客在大会展示破解Wi-Fi的间谍飞机

黑帽安全技术大会是世界上最好的能够了解未来安全趋势的信息峰会。 专业的黑客、极客,安全防范公司研究人员,政府部门的代表,IT新闻记者,几乎每个到场的人会不由自主的把自己当成一名专业的黑客。而每次的黑帽大会上,总是会爆出一些让人意想不到的新闻消息出来。

这次就有消息表明,在下周举办的黑帽大会以及EFCON安全会议上,无人间谍机WASP就有可能能为这次会议的焦点。

WASP由前美国军方无人飞机Measuirng改造而成,用途只有一个,就是作为无线网络的空中监视平台来大规模破解Wifi以及GSM网络,WASP就如同它本身的名字WASP所表述的那样,就是一个在空中四处窥探的大黄蜂,通身泛黄。所以哪天你要是看到一架奇怪的黄色无人飞机在你家上空来回盘旋,那么恭喜你,“ The Big brother is watching you”。

WASP通过机载嵌入式的威盛EPIA Pico-ITX电脑,on-board VIA EPIA Pico-ITX PCBackTrack linux系统(PS:BackTrack是一套专业的计算机安全检测的Linux操作系统,专门用来破解WEP,WPA/WPA2等Wifi加密方式以及其它网络环境),自备32GB存储空间。

除了破解Wifi网络之外,WASP还施展偷天换日之术,充当GSM网络天线,从而达到窃听连接网络的手机呼叫和短消息的目的,与此同时,飞机上配备的高清摄像机还可以从高空对想要窥探的地点进行目标的高清视频捕获。

虽然这种玩意张牙舞爪的漫天到处乱飞窥探机密,可能违反了相关的飞行律法,但是并不违反FCC(美国联邦通讯委员会)相关条例,而且这飞机也是美国两个闲着无聊的家伙在课余时间搞出来的。所以,这个项目是可以进行交易与对外贩卖的。有钱多金的公子哥们,还在用那些老式的电话窃听的方式来窃听商业竞争对手或者情人的电话内容嘛?不考虑搞一台这个来吗,给你一个让你重新认识另一个不一样的“TA”的机会。 这里有相关试飞视频,以供读者一


    
[3] menu 的用法
    来源: 互联网  发布时间: 2014-02-18
menu 的用法.
1. 简单的代码

1. public static final int ITEM_1_ID = Menu.FIRST;

2. public static final int ITEM_2_ID = Menu.FIRST + 1;

3. public static final int ITEM_3_ID = Menu.FIRST + 2;

4.     

5. public boolean onCreateOptionsMenu(Menu menu) {

6.         super.onCreateOptionsMenu(menu);

7. //不带图标的menu

8.         menu.add(0, ITEM_1_ID, 0, "item-1");       

9. //带图标的menu

10.         menu.add(0, ITEM_2_ID, 1, "item-2").setIcon(R.drawable.editbills2);

11.         menu.add(0, ITEM_3_ID, 2, "item-3").setIcon(R.drawable.billsum1);

12.         return true; 

13. }

14. 

15. public boolean onOptionsItemSelected(MenuItem item){

16.        switch (item.getItemId()) {

17.        case 1:

18.            Toast.makeText(this, "menu1",Toast.LENGTH_SHORT).show();            

19.            return true;

20.        case 2:

21.         

22.            return true;

23.        case 3:

24.          

25.            return true;

26.        }

27.        return false;

28.     }

2. menu实现的两种方法

大部分的应用程序都包括两种人机互动方式,一种是直接通过GUI的 Views,其可以满足大部分的交互操作。另外一种是应用Menu,当按下Menu按钮后,会弹出与当前活动状态下的应用程序相匹配的菜单。

这两种方式相比较都有各自的优势,而且可以很好的相辅相成,即便用户可以由主界面完成大部分操作,但是适当的拓展Menu功能可以更加完善应用程序,至少用户可以通过排列整齐的 按钮清晰的了解当前模式下可以使用的功能。
有两种方法可以为Android APPs添加菜单功能,下边将对设置过程给出详细的介绍:
第一种方法,通过Layout来添加静态菜单元素。
一般情况下,开发者在res/Layout路径下来定义应用程序的GUI。应用Eclipse创建一个新项目后,可以看到res/layout中存在一个 预置的main.xml文件,其作为程序默认启动界面。同样,可以通过这种方式 创建一个静态的Menu,创建方法参阅下边的源代码:
?View Code XML

<?xml version="1.0" encoding="utf-8"?>  
<menu xmlns:android="http://schemas.android.com/apk/res/android">  
    <item   
        android:id="@+id/previous"   
        android:title="@string/previous"   
        android:enabled="false"  
        android:icon="@android:drawable/ic_media_previous"/>  
        <!--these may not be available in next api (level > 3), so be carefull-->  
    <item   
        android:id="@+id/play_pause"   
        android:title="@string/play"   
        android:icon="@android:drawable/ic_media_play"/>  
    <item   
        android:id="@+id/next"   
        android:title="@string/next"   
        android:icon="@android:drawable/ic_menu_next"/>  
</menu>


在Activity类中调用刚刚创建的Menu,首先将当前的Activity与指定的Menu XML相关联:
@Override

public boolean onCreateOptionsMenu(Menu menu) {

    super.onCreateOptionsMenu(menu);

    getMenuInflater().inflate(R.layout.menu_mainactivity, menu);

    return true;

}

实现onOptionsItemSelected方法: (其目的是捕捉到菜单触发事件后,对具体触发的选项作出响应,实际调用的函数包含在各自的case中)
01.@Override
02.public boolean onOptionsItemSelected(MenuItem item) {
03.    switch (item.getItemId()) {
04.    case R.id.previous:
05.        previous(); //go to previous song in the playlist
06.        return true;
07.    case R.id.play_pause:
08.        isPlaying() ? pause() : play(); //toggle play/pause
09.        return true;
10.    case R.id.next:
11.        next(); //go to next song in the playlist
12.        return true;
13.    }
14.    return false; //should never happen
15.}


最后可以通过onPrepareOptionMenu方法初始化Menu Items的属性:
01.@Override
02.public boolean onPrepareOptionsMenu(Menu menu) {
03.    //set play_pause menu item look
04.    if(isPlaying()) {
05.        menu
06.            .findItem(R.id.play_pause)
07.            .setTitle(R.string.pause)
08.            .setIcon(android.R.drawable.ic_media_pause);
09.    } else {
10.        menu
11.            .findItem(R.id.play_pause)
12.            .setTitle(R.string.play)
13.            .setIcon(android.R.drawable.ic_media_play);
14.    }
15.    return true;
16.}


大部分程序都通过这种方式添加Menu菜单功能,而且通过以上的步骤来看,其实现方法非常简单。
第二种方法,在Activity类中动态创建Menu。
首先需要定义Menu Item识别序号:
1.public static final MENU_PREVIOUS = 0; //no more R.ids
2.public static final MENU_PLAY_PAUSE = 1;
3.public static final MENU_NEXT = 2;


实现onCreateOptionMenu()方法:(第一种方法中已经通过xml定义了现成的Menu结构,所以不需要应用这个方法)
01.@Override
02.public boolean onCreateOptionsMenu(Menu menu) {
03.    menu
04.        .add(0, MENU_PREVIOUS, 0, R.string.previous)
05.        .setIcon(android.R.drawable.ic_media_previous);
06.    menu
07.        .add(0, MENU_PLAY_PAUSE, 0, R.string.play)
08.        .setIcon (android.R.drawable.ic_media_play);
09.    menu
10.        .add(0, MENU_NEXT, 0, R.string.next)
11.        .setIcon(android.R.drawable.ic_media_next);
12.    return true;
13.}


引用与第一种方法相同的方式来捕捉菜单的行为:
01.@Override
02.public boolean onOptionsItemSelected(MenuItem item) {
03.    switch (item.getItemId()) {
04.    case MENU_PREVIOUS:
05.        previous(); //go to previous song in the playlist
06.        return true;
07.    case MENU_PLAY_PAUSE:
08.        isPlaying() ? pause() : play(); //toggle play/pause
09.        return true;
10.    case MENU_NEXT:
11.        next(); //go to next song in the playlist
12.        return true;
13.    }
14.    return false; //should never happen
15.}


————
对以上两种方法的补充:
根据需要设置不同Menu Item的属性:
1.menu.findItem(R.id.next).setEnabled(false);


设置Menu Item从属关系(添加子父级别):
直接写在方法中:
1.menu
2.        .addSubMenu(R.id.repeat)
3.        .add(R.id.one)
4.        .add(R.id.all)
5.        .add(R.id.none);


直接定义在XML Layout中:
?View Code XML

<item android:id="@+id/repeat" android:title="@string/repeat">  
<menu>  
    <item android:id="@+id/one" android:title="@string/repeat_one"></item>  
    <item android:id="@+id/all" android:title="@string/repeat_all"></item>  
    <item android:id="@+id/none" android:title="@string/repeat_none"></item>  
</menu>


————
这两种不同的方法实现的目的是一样的,而且不存在本质上的却别,具体根据实际情况(根据项目的结构需要或者团队开发标准)选择合适的方法来创建Menu。


    
最新技术文章:
▪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实用的代码片段 常用代码总结
php iis7站长之家
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3