当前位置:  编程技术>移动开发
本页文章导读:
    ▪java.lang.IndexOutOfBoundsException: Index: 七, Size: 7        java.lang.IndexOutOfBoundsException: Index: 7, Size: 7 /** * 处在开放注册期内的代理订单 * @param keyword 产品名称关键词 * @param intAllCount 返回的总条数 * @param pageindex 当前页索引(翻页时用,.........
    ▪ 异步加载网络数据,自定义进度条展示        异步加载网络数据,自定义进度条显示   //调用方式 Ajax *ajax = [[Ajax alloc]Ajax:urlStr target:self didFinish:@selector(showData:) isAllValues:NO valueForKey:@"list" showProgressBar:YES]; [ajax release]; //异步.........
    ▪ 由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系提起       由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起 由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起 init方法 在init方法中实例化必要的对象(遵从LazyLoad思想) ‍init方法中初始.........

[1]java.lang.IndexOutOfBoundsException: Index: 七, Size: 7
    来源: 互联网  发布时间: 2014-02-18
java.lang.IndexOutOfBoundsException: Index: 7, Size: 7
 /**
     * 处在开放注册期内的代理订单
     * @param keyword 产品名称关键词
     * @param intAllCount 返回的总条数
     * @param pageindex 当前页索引(翻页时用,从0开始)
     * @param pagesize 每页显示条数
     * @return
     */
    public static List<String[]>getOpenProductList(String keyword, int pageindex, int pagesize, Holder<Integer> AllCount)
    {
    	int stringSize =10;//返回数组长度
    	
    	List<String[]> list = new ArrayList<String[]> ();
    	List<String> tempList = new ArrayList<String> ();
    	
    	Agent_JBTMClient client = new Agent_JBTMClient();
        Agent_JBTMSoap service = client.getAgent_JBTMSoap();

        ArrayOfArrayOfString tempArrayList = (ArrayOfArrayOfString) service.Get_OpenList(keyword, pageindex, pagesize, AllCount);
        
        
        //计算总页
        int totalPage;
		if(AllCount.value%pagesize == 0)
		{
			totalPage = AllCount.value/pagesize;
			
		}
		else
		{
			totalPage = AllCount.value/pagesize+1;
		}
		
		
		//判断数据量
		int count;
		if(pageindex == totalPage-1)
		{//最后一页
			count =AllCount.value%pagesize;
		}
		else
		{
			count =AllCount.value<pagesize?AllCount.value:pagesize;
			
		}
	
        if(AllCount.value>0)
        {
        	for(int i=0; i<count; i++)
            {
            	String[] tempString = new String[stringSize];
            	tempList = tempArrayList.getArrayOfString().get(i).getString();
            	
            	for(int j=0; j<stringSize; j++)
            	{
            		tempString[j] = tempList.get(j);
            	
            	}
            	list.add(tempString);
            }
        }
		
	
		
		
        return list;
    }
    

  此代码循环显示的,之所以抛java.lang.IndexOutOfBoundsException: Index: 7, Size: 7

异常是因为int stringSize =10;//返回数组长度(接受10个字段值显示,结果net只传给我7个字段值。)

总数据一共13条,再循环显示7条数据就会出现问题了。


    
[2] 异步加载网络数据,自定义进度条展示
    来源: 互联网  发布时间: 2014-02-18
异步加载网络数据,自定义进度条显示

 

//调用方式

Ajax *ajax = [[Ajax alloc]Ajax:urlStr 
		target:self 
		didFinish:@selector(showData:) 
		isAllValues:NO 
		valueForKey:@"list"
		showProgressBar:YES];
[ajax release];

//异步回调方法
-(void) showData:(NSArray*)data{
   NSLog(@"data:%@",data);
}
 

 

//
//  Ajax.h
//  live
//
//  Created by xjj xjj on 11-7-28.
//  Copyright 2011 新境界. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "UIProgressBar.h"

@interface Ajax : NSObject {

}
@property(nonatomic,assign) id target;
@property(nonatomic)SEL didFinish;
@property(nonatomic,retain) NSMutableData *buf;
@property(nonatomic,retain) NSURLConnection *connection;
@property(nonatomic,assign) BOOL isAllValues;
@property(nonatomic,assign) NSString* valueForKey;
@property(nonatomic,assign) BOOL isText;
@property(nonatomic,assign) NSString *urlStr;
@property(nonatomic,retain) UIProgressBar *progressBar;
@property(nonatomic,assign) long contentLength;
@property(nonatomic,assign) BOOL showProgressBar;

-(void)start;
-(void)hiddenProgreesBar;

/*!
@method Ajax:target:didFinish:isAllValues:valueForKey:
@discussion 异步加载某个节点数据(JSON格式)
@param _urlStr 网络数据URL
@param _target 调用者
@param _didFinish 数据加载完毕后通知动作
@param _isAllValues 是否返回所有数据 NO or YES
@param _valueForKey 加载某个节点数据
@result 初始化Ajax实例,并异步执行
*/
-(id) Ajax:(NSString*)_urlStr target:(id)_target didFinish:(SEL)_didFinish isAllValues:(BOOL)_isAllValues valueForKey:(NSString *)_valueForKey;

/*!
@method Ajax:target:didFinish:
@discussion 异步加数据(文件本格式)所有文本数据
@param _urlStr 网络数据URL
@param _target 调用者
@param _didFinish 数据加载完毕后通知动作
@result 初始化Ajax实例,并异步执行
*/
-(id) Ajax:(NSString*)_urlStr target:(id)_target didFinish:(SEL)_didFinish;

/*!
@method Ajax:target:didFinish:isAllValues:valueForKey:showProgressBar:
@discussion 异步加载某个节点数据(JSON格式)
@param _urlStr 网络数据URL
@param _target 调用者
@param _didFinish 数据加载完毕后通知动作
@param _isAllValues 是否返回所有数据 NO or YES
@param _valueForKey 加载某个节点数据
@param _showProgressBar 是否显示进度条 NO or YES
@result 初始化Ajax实例,并异步执行
*/
-(id) Ajax:(NSString*)_urlStr target:(id)_target didFinish:(SEL)_didFinish isAllValues:(BOOL)_isAllValues valueForKey:(NSString *)_valueForKey showProgressBar:(BOOL)_showProgressBar;

/*!
@method Ajax:target:didFinish:showProgressBar
@discussion 异步加数据(文件本格式)所有文本数据
@param _urlStr 网络数据URL
@param _target 调用者
@param _didFinish 数据加载完毕后通知动作
@param _showProgressBar 是否显示进度条 NO or YES
@result 初始化Ajax实例,并异步执行
*/
-(id) Ajax:(NSString*)_urlStr target:(id)_target didFinish:(SEL)_didFinish showProgressBar:(BOOL)_showProgressBar;

@end

 

实现

 

//
//  Ajax.m
//  live
//
//  Created by xjj xjj on 11-7-28.
//  Copyright 2011 新境界. All rights reserved.
//

#import "Ajax.h"
#import "JSONParser.h"
#import "UIProgressBar.h"

@implementation Ajax
@synthesize target,didFinish;
@synthesize buf;
@synthesize connection;
@synthesize isAllValues,valueForKey;
@synthesize isText;
@synthesize urlStr;
@synthesize progressBar;
@synthesize contentLength;
@synthesize showProgressBar;

-(id) Ajax:(NSString*)_urlStr target:(id)_target didFinish:(SEL)_didFinish showProgressBar:(BOOL)_showProgressBar{
	if(self){
		self.showProgressBar = _showProgressBar;
		self.urlStr = _urlStr;
		self.isText = YES;
		self.target = _target;
		self.didFinish = _didFinish;
		[self start];
	}
	return self;
}
-(id) Ajax:(NSString*)_urlStr target:(id)_target didFinish:(SEL)_didFinish{
	/*self = [super init];
	if(self){
		self.showProgressBar = YES;
		self.urlStr = _urlStr;
		self.isText = YES;
		self.target = _target;
		self.didFinish = _didFinish;
		[self start];
	}
	return self;*/
	return [self Ajax:_urlStr target:_target didFinish:_didFinish showProgressBar:YES];
}

-(id) Ajax:(NSString *)_urlStr target:(id)_target didFinish:(SEL)_didFinish isAllValues:(BOOL)_isAllValues valueForKey:(NSString *)_valueForKey showProgressBar:(BOOL)_showProgressBar{
	self = [super init];
	if(self){
		self.showProgressBar = _showProgressBar;
		self.urlStr = _urlStr;
		self.isAllValues = _isAllValues;
		self.valueForKey = _valueForKey;
		self.target = _target;
		self.didFinish = _didFinish;
		[self start];
	}
	return self;
}

-(id) Ajax:(NSString *)_urlStr target:(id)_target didFinish:(SEL)_didFinish isAllValues:(BOOL)_isAllValues valueForKey:(NSString *)_valueForKey{
	return [self Ajax:_urlStr target:_target didFinish:_didFinish isAllValues:_isAllValues valueForKey:_valueForKey showProgressBar:YES];
}

-(void)start{
	if(connection==nil){
		[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
		buf = [[NSMutableData alloc] initWithLength:0];
		NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
		[request setURL:[NSURL URLWithString:urlStr]];
		[request setHTTPMethod:@"GET"];
		connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
		
		if([target isKindOfClass:[UIViewController class]]==YES&&showProgressBar==YES){
			UIViewController *viewController = (UIViewController*)target;
			progressBar = [[UIProgressBar alloc] initWithFrame:CGRectMake(0, viewController.view.frame.size.height - 10,viewController.view.frame.size.width, 10)];
			progressBar.minValue = 0;
			
			[progressBar setLineColor:[UIColor blackColor]];
			[progressBar setProgressColor:[UIColor redColor]];	
			//[progressBar setProgressColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"3.png"]]];	
			[progressBar setProgressRemainingColor:[UIColor greenColor]];
			[viewController.view addSubview:progressBar];	
		}
		[request release];
	}
}
//收到响应时
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
	if(progressBar!=nil)
		progressBar.maxValue = response.expectedContentLength;
}
//接收数据
-(void)connection:(NSURLConnection *)aConn didReceiveData:(NSData *)data{
	[buf appendData:data];
	if(progressBar!=nil)
		progressBar.currentValue += [data length];
}
//加载失败
-(void)connection:(NSURLConnection*)aConn didFailWithError:(NSError*)error{
	NSLog(@"didFailWithError:%@",error);
	[self hiddenProgreesBar];
}
//接收完毕
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
	if(didFinish!=nil){
		if(isText)
			[target performSelector:didFinish withObject:buf];
		else{
			NSArray *data = [JSONParser parseJSON:buf isAllValues:isAllValues valueForKey:valueForKey];
			[target performSelector:didFinish withObject:data];
		}
	}
	[self hiddenProgreesBar];
}
-(void) hiddenProgreesBar{
	if(progressBar!=nil){
	//淡淡消失效果
		[UIView animateWithDuration:2
					 animations:^{
						 progressBar.alpha = 0;
					 }];
		[progressBar performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:2];
	}
	[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
-(void)dealloc{
	[connection release];
	[buf release];
	[progressBar release];
	[super dealloc];
}
@end
1 楼 网络混混 2011-08-26  
10.#import "JSONParser.h" 
11.#import "UIProgressBar.h" 

等上那找呢,老大?
2 楼 gekie 2011-08-26  
网络混混 写道
10.#import "JSONParser.h" 
11.#import "UIProgressBar.h" 

等上那找呢,老大?


网上找,开源的。
3 楼 网络混混 2011-08-29  
哥,能给弟贴下去那下吗?
小弟是新手。。
4 楼 gekie 2011-08-29  
网络混混 写道
哥,能给弟贴下去那下吗?
小弟是新手。。

回头我给你。

    
[3] 由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系提起
    来源: 互联网  发布时间: 2014-02-18
由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起

由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起

init方法

在init方法中实例化必要的对象(遵从LazyLoad思想)

‍init方法中初始化ViewController本身

 loadView方法

当view需要被展示而它却是nil时,viewController会调用该方法。不要直接调用该方法。

如果手工维护views,必须重载重写该方法

如果使用IB维护views,必须不能重载重写该方法

loadView和IB构建view

你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 如果设备内存不足的时候, view 控制器会收到didReceiveMemoryWarning的消息。 默认的实现是检查当前控制器的view是否在使用。 如果它的view不在当前正在使用的view hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release, loadView方法将被再次调用来创建一个新的view。

 

viewDidLoad方法

viewDidLoad 此方法只有当view从nib文件初始化的时候才被调用。

重载重写该方法以进一步定制view

在iPhone OS 3.0及之后的版本中,还应该重载重写viewDidUnload来释放对view的任何索引

viewDidLoad后调用数据Model

viewDidUnload方法‍

当系统内存吃紧的时候会调用该方法(注:viewController没有被dealloc)

内存吃紧时,在iPhone OS 3.0之前didReceiveMemoryWarning是释放无用内存的唯一方式,但是OS 3.0及以后viewDidUnload方法是更好的方式

在该方法中将所有IBOutlet(无论是property还是实例变量)置为nil(系统release view时已经将其release掉了)

在该方法中释放其他与view有关的对象、其他在运行时创建(但非系统必须)的对象、在viewDidLoad中被创建的对象、缓存数据等 release对象后,将对象置为nil(IBOutlet只需要将其置为nil,系统release view时已经将其release掉了)

一般认为viewDidUnload是viewDidLoad的镜像,因为当view被重新请求时,viewDidLoad还会重新被执行

viewDidUnload中被release的对象必须是很容易被重新创建的对象(比如在viewDidLoad或其他方法中创建的对象),不要release用户数据或其他很难被重新创建的对象

dealloc方法

viewDidUnload和dealloc方法没有关联,dealloc还是继续做它该做的事情


    
最新技术文章:
▪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的区别介绍
sqlserver iis7站长之家
▪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