我的编程空间,编程开发者的网络收藏夹
学习永远不晚

iOS实现联系人列表功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

iOS实现联系人列表功能

本文实例为大家分享了iOS实现联系人列表功能的具体代码,供大家参考,具体内容如下

按照顺序排列联系人列表,需要引入一些工具(详见demo):

主要部分代码:


#import "LinkMan.h"
#import "LinkmanCell.h"
#import "LinkmanSelectCell.h"
#import "pinyin.h"
#import "ChineseString.h"
@interface LinkMan ()<UISearchBarDelegate,UITextFieldDelegate,UITableViewDelegate,UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UILabel    *titleLab;          //标题
@property (weak, nonatomic) IBOutlet UIView     *titleView;         //标题栏
@property (weak, nonatomic) IBOutlet UITableView*gTableView;        //联系人TV
@property (weak, nonatomic) IBOutlet UIButton   *sureBut;           //确定
@property (nonatomic ,strong) NSMutableArray    *gPeopleArr;        //一级联系人
@property (nonatomic ,strong) NSMutableArray    *gMarkKeyArr;       //标识
@property (nonatomic ,strong) NSMutableArray    *gLinkManArr;       //二级联系人
 
@end
 
@implementation LinkMan
@synthesize gTableView;
@synthesize gPeopleArr;
@synthesize gLinkManArr;
@synthesize gMarkKeyArr;
 
 
-(void)dealloc{
    gPeopleArr = nil;
    gMarkKeyArr = nil;
}
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    //清空选择联系人
    NSUserDefaults *userInfoDefaults = [NSUserDefaults standardUserDefaults];
    [userInfoDefaults setObject:nil forKey:@"linkmanSelectList"];
    [userInfoDefaults synchronize];
    
    //标题栏
    [self cTitleBar];
    
    //右侧选择栏
    gMarkKeyArr = [[NSMutableArray alloc] init];
    gPeopleArr = [[NSMutableArray alloc] init];
    gLinkManArr = [[NSMutableArray alloc] init];
  
    //网络数据请求
    [self cNetWorkLinkman];
}
 
//标题栏
-(void)cTitleBar{
    int ver = [[[UIDevice currentDevice] systemVersion] intValue];
    float height = 44;
    if(ver >= 7){
        height = 64;
    }
    CGRect titleRect = _titleView.frame;
    titleRect.size.height = height;
    [_titleView setFrame:titleRect];
    
}
 
//返回
- (IBAction)returnAction:(id)sender {
    //联系人可多选
    NSUserDefaults *userInfoDefaults = [NSUserDefaults standardUserDefaults];
    [userInfoDefaults setObject:@"0" forKey:@"linkmanSelect"];
    [userInfoDefaults synchronize];
    //二级
    if(gLinkManArr.count > 0){
        [gLinkManArr removeAllObjects];
        [_titleLab setText:@"联系人"];
        [gTableView reloadData];
    }else{//一级
        NSUserDefaults *noneDefaults = [NSUserDefaults standardUserDefaults];
        [noneDefaults setObject:@"1" forKey:@"noneproject"];
        [noneDefaults synchronize];
        [self.navigationController popViewControllerAnimated:YES ];
    }
}
 
//按照拼音首字母排序
- (NSMutableArray *)getChineseStringArr:(NSMutableArray *)arrToSort {
    NSMutableArray *chineseStringsArray = [NSMutableArray array];
    for(int i = 0; i < [arrToSort count]; i++) {
        ChineseString *chineseString=[[ChineseString alloc]init];
        NSDictionary *tempDict = (NSDictionary *)[arrToSort objectAtIndex:i];
        chineseString.string=[NSString stringWithString:[tempDict objectForKey:@"name"]];
        chineseString.pID = [NSString stringWithString:[tempDict objectForKey:@"id"]];
        if(chineseString.string==nil){
            chineseString.string=@"";
        }
        if(![chineseString.string isEqualToString:@""]){
            //join the pinYin
            NSString *pinYinResult = [NSString string];
            for(int j = 0;j < chineseString.string.length; j++) {
                NSString *singlePinyinLetter = [[NSString stringWithFormat:@"%c",
                                                 pinyinFirstLetter([chineseString.string characterAtIndex:j])]uppercaseString];
                pinYinResult = [pinYinResult stringByAppendingString:singlePinyinLetter];
            }
            chineseString.pinYin = pinYinResult;
        } else {
            chineseString.pinYin = @"";
        }
        [chineseStringsArray addObject:chineseString];
        //        [chineseString release];
    }
    //sort the ChineseStringArr by pinYin 拼音排序
    NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"pinYin" ascending:YES]];
    [chineseStringsArray sortUsingDescriptors:sortDescriptors];
    NSMutableArray *arrayForArrays = [NSMutableArray array];
    BOOL checkValueAtIndex= NO;  //flag to check
    NSMutableArray *TempArrForGrouping = nil;
    [gMarkKeyArr removeAllObjects];
    
    for(int index = 0; index < [chineseStringsArray count]; index++)
    {
        ChineseString *chineseStr = (ChineseString *)[chineseStringsArray objectAtIndex:index];
        NSMutableString *strchar= [NSMutableString stringWithString:chineseStr.pinYin];
        NSString *sr= [strchar substringToIndex:1];
        
        if(![gMarkKeyArr containsObject:[sr uppercaseString]])//在这里我检查字符是否已经选择头键
        {
            [gMarkKeyArr addObject:[sr uppercaseString]];
            TempArrForGrouping = [[NSMutableArray alloc] initWithObjects:nil];
            checkValueAtIndex = NO;
        }
        if([gMarkKeyArr containsObject:[sr uppercaseString]])
        {
            [TempArrForGrouping addObject:[chineseStringsArray objectAtIndex:index]];
            if(checkValueAtIndex == NO)
            {
                [arrayForArrays addObject:TempArrForGrouping];
                checkValueAtIndex = YES;
            }
        }
    }
    
    return arrayForArrays;
}
 
//数据准备
-(NSMutableDictionary *)linkmanAction:(NSMutableDictionary *)listDict{
    NSMutableArray *branchPersonArr = [[NSMutableArray alloc] init];
    for (int k = 1; k < 20; k ++) {
        NSMutableDictionary *branchPersonDict = [[NSMutableDictionary alloc] init];
        NSInteger arcRandom = arc4random()%1000;
        
        [branchPersonDict setObject:[NSString stringWithFormat:@"%d",arcRandom*k] forKey:@"id"];
        [branchPersonDict setObject:[NSString stringWithFormat:@"%d",arcRandom*k] forKey:@"name"];
        
        NSMutableArray *branchArr = [[NSMutableArray alloc] init];
        for (int i = 1; i < 20; i ++) {
            NSMutableDictionary *branchDict = [[NSMutableDictionary alloc] init];
            NSInteger arcRandom = arc4random()%10000 + 10000;
            [branchDict setObject:[NSString stringWithFormat:@"%d",arcRandom*i] forKey:@"id"];
            [branchDict setObject:[NSString stringWithFormat:@"%d",arcRandom*i] forKey:@"name"];
            [branchDict setObject:@"110" forKey:@"phone"];
            [branchDict setObject:@"" forKey:@"header"];
            [branchArr addObject:branchDict];
        }
        [branchPersonDict setObject:branchArr forKey:@"member"];
        [branchPersonArr addObject:branchPersonDict];
    }
    
    [listDict setObject:branchPersonArr forKey:@"branch"];
    
    return listDict;
}
 
//网络数据请求
-(void)cNetWorkLinkman{
    NSMutableDictionary *listDict = [[NSMutableDictionary alloc] init];
    listDict = [self linkmanAction:listDict];
   
    NSArray *branchArr = [listDict objectForKey:@"branch"];
    NSArray *projectArr;
    NSMutableArray *tempArr = [branchArr mutableCopy];
    for (int j = 0; j <projectArr.count; j ++) {
        NSDictionary *prodict = [projectArr objectAtIndex:j];
        [tempArr addObject:prodict];
    }
    
    //从网络接口获取数据
    if(listDict){
        //联系人列表
        NSUserDefaults *userInfoDefaults = [NSUserDefaults standardUserDefaults];
        [userInfoDefaults setObject:[self chineseStringArr:tempArr] forKey:@"linkmanList"];
        [userInfoDefaults synchronize];
        [gTableView reloadData];
    }
   
}
//几组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView {
    
    if(gLinkManArr.count > 0){//二级
        if(gLinkManArr!=nil && gLinkManArr.count > 0){
            gLinkManArr = [self getChineseStringArr:gLinkManArr];
            return gLinkManArr.count;
        }
    }else{//一级
        [_titleLab setText:@"联系人"];
        //联系人列表
        NSUserDefaults *userInfoDefaults = [NSUserDefaults standardUserDefaults];
        NSMutableArray *linkmanMarr = [userInfoDefaults objectForKey:@"linkmanList"];
        if(linkmanMarr!=nil && linkmanMarr.count > 0){
            gPeopleArr = [self getChineseStringArr:linkmanMarr];
            return gPeopleArr.count;
        }
    }
    
    return 0;
}
 
//几行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    [_sureBut setHidden:YES];
    if(gLinkManArr.count > 0){//二级
        [_sureBut setHidden:NO];
        NSArray *temp = [gLinkManArr objectAtIndex:section];
        return temp.count;
    }else{//一级
        //联系人列表
        NSUserDefaults *userInfoDefaults = [NSUserDefaults standardUserDefaults];
        NSMutableArray *linkmanMarr = [userInfoDefaults objectForKey:@"linkmanList"];
        if(linkmanMarr!=nil && linkmanMarr.count > 0){
            //联系人状态
            gPeopleArr = [self getChineseStringArr:linkmanMarr];
            NSArray *temp = [gPeopleArr objectAtIndex:section];
            return temp.count;
        }
    }
    
    return 0;
}
//*字母排序搜索
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
    return gMarkKeyArr;
}
//搜索时显示按索引第几组
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{
    NSInteger count = 0;
    
    for(NSString *character in gMarkKeyArr){
        if([character isEqualToString:title]){
            return count;
        }
        count ++;
    }
    return count;
}
//标头
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return [gMarkKeyArr objectAtIndex:section];
}
//TableView赋值
- (UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    //联系人可多选
    NSUserDefaults *userInfoDefaults = [NSUserDefaults standardUserDefaults];
    NSString *linkmanSelect = [userInfoDefaults objectForKey:@"linkmanSelect"];
    
    if([linkmanSelect isEqualToString:@"1"]){
        static NSString *cellIdentifier=@"LinkmanSelectCell";
        LinkmanSelectCell *cell=[tableview dequeueReusableCellWithIdentifier:cellIdentifier];
        if (!cell) {
            cell = (LinkmanSelectCell*)[[[NSBundle mainBundle] loadNibNamed:@"LinkmanSelectCell" owner:nil options:nil] objectAtIndex:0];
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
        }
        cell.backgroundColor=[UIColor clearColor];
        [cell  setClipsToBounds:YES];
        //二级
        if(gLinkManArr.count > 0){
            if(gLinkManArr.count > indexPath.section){
                NSArray *onegp = [gLinkManArr objectAtIndex:indexPath.section];
                ChineseString *strLinkMan = [onegp objectAtIndex:indexPath.row];
                [cell cSetValueID:strLinkMan.pID andLinkMan:strLinkMan.string andBranch:@"" andPhoneNum:nil];
            }else{
                [cell cSetValueID:@"" andLinkMan:@"" andBranch:@"" andPhoneNum:nil];
            }
        }else{//一级
            if(gPeopleArr.count > indexPath.section){
                NSArray *onegp = [gPeopleArr objectAtIndex:indexPath.section];
                ChineseString *strLinkMan = [onegp objectAtIndex:indexPath.row];
                [cell cSetValueID:strLinkMan.pID andLinkMan:strLinkMan.string andBranch:@"" andPhoneNum:nil];
            }else{
                [cell cSetValueID:@"" andLinkMan:@"" andBranch:@"" andPhoneNum:nil];
            }
        }
        return cell;
        
    }else{
        static NSString *cellIdentifier=@"LinkmanCell";
        LinkmanCell *cell=[tableview dequeueReusableCellWithIdentifier:cellIdentifier];
        if (!cell) {
            cell = (LinkmanCell*)[[[NSBundle mainBundle] loadNibNamed:@"LinkmanCell" owner:nil options:nil] objectAtIndex:0];
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
        }
        cell.backgroundColor=[UIColor clearColor];
        [cell  setClipsToBounds:YES];
        
        //二级
        if(gLinkManArr.count > 0){
            if(gLinkManArr.count > indexPath.section){
                NSArray *onegp = [gLinkManArr objectAtIndex:indexPath.section];
                ChineseString *strLinkMan = [onegp objectAtIndex:indexPath.row];
                [cell cSetValueID:strLinkMan.pID andLinkMan:strLinkMan.string andBranch:@"" andPhoneNum:nil];
            }else{
                [cell cSetValueID:@"" andLinkMan:@"" andBranch:@"" andPhoneNum:nil];
            }
        }else{//一级
            if(gPeopleArr.count > indexPath.section){
                NSArray *onegp = [gPeopleArr objectAtIndex:indexPath.section];
                ChineseString *strLinkMan = [onegp objectAtIndex:indexPath.row];
                [cell cSetValueID:strLinkMan.pID andLinkMan:strLinkMan.string andBranch:@"" andPhoneNum:nil];
            }else{
                [cell cSetValueID:@"" andLinkMan:@"" andBranch:@"" andPhoneNum:nil];
            }
        }
        return cell;
    }
}
 
 
//选中时执行的操作
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [self.view endEditing:YES];
    LinkmanCell *tempCell = (LinkmanCell *)[tableView cellForRowAtIndexPath:indexPath];
 
    //二级
    if(gLinkManArr.count > 0){
       
    }else{//一级
        NSInteger theIndex = 0;
        for (int i = 0; i <= indexPath.section ; i ++) {
            NSArray *tempPeoArr = [gPeopleArr objectAtIndex:i];
            if(i == indexPath.section){
                theIndex = theIndex + indexPath.row;
            }else{
                theIndex = theIndex + tempPeoArr.count;
            }
            
        }
 
        //联系人列表
        NSUserDefaults *userInfoDefaults = [NSUserDefaults standardUserDefaults];
        NSMutableArray *linkmanMarr = [userInfoDefaults objectForKey:@"linkmanList"];
        NSDictionary *linkmanDict;
        if(linkmanMarr.count > theIndex){
            linkmanDict = [linkmanMarr objectAtIndex:theIndex];
        }else{
            return;
        }
        NSArray *linkArr = [linkmanDict objectForKey:@"member"];
        if(linkArr.count > 0){
            gLinkManArr = [linkArr mutableCopy];
            [_titleLab setText:tempCell.gLinkMan.text];
            //联系人可多选
            NSUserDefaults *userInfoDefaults = [NSUserDefaults standardUserDefaults];
            [userInfoDefaults setObject:@"1" forKey:@"linkmanSelect"];
            [userInfoDefaults synchronize];
            
            [gTableView reloadData];
        }
    }
}
 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 44.0;
}
//UITableViewDelegate,UITableViewDataSource
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(CGFLOAT_MIN, CGFLOAT_MIN, CGFLOAT_MIN, 22)];
    [tempView setBackgroundColor:[UIColor colorWithRed:248.0/255 green:248.0/255 blue:248.0/255 alpha:1]];
    UILabel *titleLab = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 100, 22)];
    [titleLab setBackgroundColor:[UIColor clearColor]];
    if(gMarkKeyArr.count > section){
        [titleLab setText:[gMarkKeyArr objectAtIndex:section]];
    }else{
        [titleLab setText:@""];
    }
    [titleLab setTextColor:[UIColor colorWithRed:34.0/255 green:34.0/255 blue:34.0/255 alpha:1]];
    [titleLab setFont:[UIFont boldSystemFontOfSize:17]];
    [tempView addSubview:titleLab];
    
    return tempView;
}
 
//按照拼音首字母排序
- (NSMutableArray *)chineseStringArr:(NSMutableArray *)arrToSort {
    NSMutableArray *chineseStringsArray = [NSMutableArray array];
    for(int i = 0; i < [arrToSort count]; i++) {
        ChineseString *chineseString=[[ChineseString alloc]init];
        NSDictionary *tempDict = (NSDictionary *)[arrToSort objectAtIndex:i];
        chineseString.string=[NSString stringWithString:[tempDict objectForKey:@"name"]];
        chineseString.pID = [NSString stringWithString:[tempDict objectForKey:@"id"]];
        //chineseString.bID = [NSString stringWithString:[tempDict objectForKey:@"bid"]];
        if(chineseString.string==nil){
            chineseString.string=@"";
        }
        if(![chineseString.string isEqualToString:@""]){
            //join the pinYin
            NSString *pinYinResult = [NSString string];
            for(int j = 0;j < chineseString.string.length; j++) {
                NSString *singlePinyinLetter = [[NSString stringWithFormat:@"%c",
                                                 pinyinFirstLetter([chineseString.string characterAtIndex:j])]uppercaseString];
                pinYinResult = [pinYinResult stringByAppendingString:singlePinyinLetter];
            }
            chineseString.pinYin = pinYinResult;
        } else {
            chineseString.pinYin = @"";
        }
        [chineseStringsArray addObject:chineseString];
        //        [chineseString release];
    }
    //sort the ChineseStringArr by pinYin 拼音排序
    NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"pinYin" ascending:YES]];
    [chineseStringsArray sortUsingDescriptors:sortDescriptors];
   
    
    NSMutableArray *arrayForArrays = [[NSMutableArray alloc]init];
    for (int i = 0; i < chineseStringsArray.count ; i ++) {
        ChineseString *tempChinese = [chineseStringsArray objectAtIndex:i];
        NSString *chineseName = tempChinese.string;
        for (int j = 0; j < arrToSort.count ; j ++) {
            NSDictionary *tempSortDict = [arrToSort objectAtIndex:j];
            NSString *sortName = [tempSortDict objectForKey:@"name"];
            if([chineseName isEqualToString:sortName]){
                [arrayForArrays addObject:tempSortDict];
            }
        }
    }
    
    return arrayForArrays;
}
 
//确定
- (IBAction)sureAction:(id)sender {
    //已选择联系人
    NSUserDefaults *userInfoDefaults = [NSUserDefaults standardUserDefaults];
    NSMutableArray *selectList = [userInfoDefaults objectForKey:@"linkmanSelectList"];
    if(selectList != nil){
        NSString *messageStr = [NSString stringWithFormat:@"您选择了%d个对象",selectList.count];
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:messageStr delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alert show];
        
        [userInfoDefaults setObject:nil forKey:@"linkmanSelectList"];
        [userInfoDefaults synchronize];
    }
}
 
@end

Demo:iOS实现联系人列表

示图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

iOS实现联系人列表功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

iOS实现联系人列表功能

本文实例为大家分享了iOS实现联系人列表功能的具体代码,供大家参考,具体内容如下 按照顺序排列联系人列表,需要引入一些工具(详见demo):主要部分代码:#import "LinkMan.h" #import "LinkmanCell.h"
2022-05-24

AndroidCompose实现联系人列表流程

声明式UI,更简单的自定义,实时带交互的预览功能Compose并不是类似于Recyclerview的高级控件,而是直接抛弃了View,ViewGroup那套东西,从上到下鲁了一套全新的框架,直白点说就是它的渲染机制,布局机制,触摸算法,以及UI具体写法全都是新的
2023-03-10

android仿微信联系人索引列表功能

前言因为自己在做的一个小软件里面需要用到从A-Z排序的ListView,所以自然而然的想到了微信的联系人,我想要的就是那样的效果。本来没打算自己去写,想要第三方写好的东西,搜了几个之后发现有的太复杂了,有的简单是简单,但是不符合我的要求,所
2023-05-30

Android Compose如何实现联系人列表

这篇文章主要介绍“Android Compose如何实现联系人列表”,在日常操作中,相信很多人在Android Compose如何实现联系人列表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android C
2023-07-05

Android ContentProvider实现获取手机联系人功能

在之前项目中有用到关于获取手机联系人的部分,闲置就想和大家分享一下,话不多说,上代码:java部分:package com.example.content; import android.content.ContentResolver;
2023-05-30

Android实现可浏览和搜索的联系人列表

通过这篇文章,我想说明一下如何创建一个可搜索的“联系人列表”Android应用程序。使用这个应用程序,用户可以通过使用导航按钮浏览所有保存的联系人和根据联系人名称搜索联系人。该应用程序还可以显示联系人的照片(如果可用)。 要浏览联系人列表可
2022-06-06

iOS实现从通讯录中选择联系人

有时候APP需要用户输入一位联系人的姓名和电话,除了用户手动输入,一般也允许用户从通讯录中选择一位联系人(图1),下面的代码就是使用系统的库实现这一需求。图1 完整代码:#imp
2022-06-04

Android实现获取联系人电话号码功能

本篇文档主要记录一下获取联系人的电话号码的一种方式。 1、选择联系人............ //构造一个隐式的Intent,拉起联系人界面 final Intent pickIntent = new Intent(Intent.ACTIO
2022-06-06

Android使用AsyncQueryHandler实现获取手机联系人功能

利用AsyncQueryHandler能异步任务获取手机联系人,增加用户体验,使用起来也很方便。不多说,上干货。布局文件main.xml
2023-05-30

Android ListView实现简单列表功能

ListView如何实现简单列表,供大家参考,具体内容如下效果图:啥也没干的ListView张这样:fry.Activity01package fry;import com.example.ListView.R;import android
2023-05-30

SpringMVC RESTFul如何实现列表功能

本文小编为大家详细介绍“SpringMVC RESTFul如何实现列表功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringMVC RESTFul如何实现列表功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
2023-06-30

Android RecyclerView实现下拉列表功能

现在市面上的很多的应用,都带有下拉列表的功能,将所有选项都放在下拉列表中,当用户点击选择的时候,弹出所有的选项,用户选择一项后,下拉列表自动隐藏,很多下拉列表都是用ListView + PopupWindow来实现的,由于Google推出了
2022-06-06

在Android应用怎实现一个获取联系人电话的功能

本篇文章给大家分享的是有关在Android应用怎实现一个获取联系人电话的功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、选择联系人............//构造一个隐式
2023-05-31

Android实现屏蔽微信拉黑和删除联系人功能示例

Android实现屏蔽微信拉黑和删除联系人功能,废话不多说,具体如下:实现效果: 让微信永远弹不出那个删除的对话框不就相当于屏蔽掉该功能了吗?哈哈效果如图:实现原理: 1.我们知道,其实微信每次删除联系人都会弹出此页面2.如果你对Acces
2022-06-06

NodeJS系列之实现了request.querystring功能

在Node.js中,可以使用`url`模块来实现类似于`request.querystring`的功能。`url`模块提供了一些有用的方法来解析URL字符串和构建URL。下面是一个简单的例子,演示了如何使用`url`模块来获取查询字符串的参
2023-09-23

表关联使用INNER JOIN实现更新功能

准备一些数据,创建2张表,表1为学生表: CREATE TABLE [dbo].[Student]( [SNO] INT NOT NULL PRIMARY KEY, [Name] NVARCHAR(10) NOT NULL, [Perform
表关联使用INNER JOIN实现更新功能
2014-08-25

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录