Mi aplicación es tener una tabla que está poblada por SQLite DB contiene gran cantidad de datos esto ocasiona que la carga diferida en la vista de tabla¿Cómo puedo añadir "carga más" opción de vista de tabla
Este es el código
- (void) searchData {
//i=0;
[newSearchBar setShowsCancelButton:YES animated:YES];
NSLog(@"search data started ");
NSLog(@" checking value %@",newSearchBar.text);
NSString *databaseName = @"imeating.sql";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *documentsDir=[documentPaths objectAtIndex:0];
NSString *databasePath=[documentsDir stringByAppendingPathComponent:databaseName];
sqlite3 *database;
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
NSLog(@"with in if sqlite3 open");
// Setup the SQL Statement and compile it for faster access
sqlite3_stmt *compiledStatement ;
const char *sqlStatement ;
/* if ([searchFlag isEqualToString:@"DEF"])
{
sqlStatement = "select subitem_name, subitem_detail_id from subitem_detail limit 200" ;
}
else
{*/
sqlStatement = "select category_id, upper(subitem_name), subitem_detail_id, protein, carbohydrates, fat, calorie from subitem_detail where subitem_name LIKE ? order by subitem_name limit ?,?" ;
NSLog(@"inside search b4 wildsearch %@",searchString);
wildSearch = [NSString stringWithFormat:@"%@%@",searchString, @"%"];
NSLog(@"wildsearch %@",wildSearch);
[newSearchBar setShowsCancelButton:YES animated:YES];
//NSLog(@"inside search : %@", wildSearch);
//}
if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
{
NSLog(@"with in if sqlite3 prepare v2");
// if (![searchFlag isEqualToString:@"DEF"])
// {
sqlite3_bind_text(compiledStatement, 1, [wildSearch UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_int(compiledStatement, 2, llimit);
sqlite3_bind_int(compiledStatement, 3, ulimit);
// }
// Loop through the results and add it to array
if (llimit <200){
NSLog(@"with in if limit < 200");
itemArray = [[NSMutableArray alloc] init] ;
}
while (sqlite3_step(compiledStatement) == SQLITE_ROW) {
//NSLog(@" while sqlite3 step");
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init] ;
//[itemDic release];
//itemDic = nil ;
itemDic = [[[NSMutableDictionary alloc] init] autorelease];
NSString *categoryId = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
NSString *itemName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
NSString *itemId = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
NSString *protein = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)];
NSString *carbo = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 4)];
NSString *fat = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 5)];
NSString *calorie = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 6)];
/* NSLog(@"itemname : %@", itemName);
NSLog(@"itemid : %@", itemId);
NSLog(@"\n");*/
[itemDic setObject:categoryId forKey:@"categoryId"];
[itemDic setObject:itemId forKey:@"itemId"];
[itemDic setObject:itemName forKey:@"itemName"];
[itemDic setObject:protein forKey:@"protein"];
[itemDic setObject:carbo forKey:@"carbohydrate"];
[itemDic setObject:fat forKey:@"fat"];
[itemDic setObject:calorie forKey:@"calorie"];
[itemArray addObject:itemDic];
if (ulimit%200 == 0)
{
//activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActionSheetStyleDefault];
//[activity startAnimating];
[newTableView reloadData];
//[newSearchBar setShowsCancelButton:YES animated:YES];
//NSLog(@"list all views after 1st reload: %@", [self.navigationController.viewControllers description]);
//[newTableView addSubview:activity];
//[activity stopAnimating];
//[activity release];
//NSLog(@" with in if");
}
[pool drain];
} /*else
{
UIAlertView *alert = [[UIAlertView alloc ] initWithTitle:@"Error" message:@"sqlite rows not returned" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] ;
[alert show];
}*/
}
} else
{
UIAlertView *alert = [[UIAlertView alloc ] initWithTitle:@"Error" message:@"DataBase Path doesn't exists" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] ;
[alert show];
}
//NSLog(@"itemArray desc : %@",[itemArray description]);
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
//NSLog(@"Inside number of sections in tableview");
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [itemArray count] ;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
//NSLog(@"indexpath row val : %d", indexPath.row);
tableIndex = indexPath ;
//NSLog(@"print indexpath row : %d", indexPath.row);
//NSLog(@"print limit : %d", limit);
if (indexPath.row > limit)
{
llimit = llimit+200 ;
ulimit = ulimit+200 ;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//[opq cancelAllOperations];
NSLog(@"before ns operation");
opq = [NSOperationQueue new];
//opq = [[NSOperationQueue alloc] init];
//[opq setMaxConcurrentOperationCount:2];
// [self performSelectorOnMainThread:@selector(searchData) withObject:nil waitUntilDone:YES];
NSInvocationOperation *op = [[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(searchData) object:nil] autorelease];
[opq addOperation:op];
NSLog(@"after ns operation");
//[op release];
//[opq release];
[pool drain];
i++;
limit = limit + 120 ;
NSLog(@"i=%d",i);
//[cell setText:[[itemArray objectAtIndex:indexPath.row] valueForKey:@"itemName"]];
}
// Configure the cell.
//[cell setText:[[itemArray objectAtIndex:indexPath.row] valueForKey:@"itemName"]];
cell.textLabel.text = [[itemArray objectAtIndex:indexPath.row] valueForKey:@"itemName"] ;
NSString *pval, *cval, *fval, *cal ;
if ([[[itemArray objectAtIndex:indexPath.row] valueForKey:@"protein"] length] <= 5)
pval = [[itemArray objectAtIndex:indexPath.row] valueForKey:@"protein"];
else
pval = [[[itemArray objectAtIndex:indexPath.row] valueForKey:@"protein"] substringWithRange:NSMakeRange(0, 5)];
if ([[[itemArray objectAtIndex:indexPath.row] valueForKey:@"carbohydrate"] length] <= 5)
cval = [[itemArray objectAtIndex:indexPath.row] valueForKey:@"carbohydrate"];
else
cval = [[[itemArray objectAtIndex:indexPath.row] valueForKey:@"carbohydrate"] substringWithRange:NSMakeRange(0, 5)];
if ([[[itemArray objectAtIndex:indexPath.row] valueForKey:@"fat"] length] <= 5)
fval = [[itemArray objectAtIndex:indexPath.row] valueForKey:@"fat"];
else
fval = [[[itemArray objectAtIndex:indexPath.row] valueForKey:@"fat"] substringWithRange:NSMakeRange(0, 5)];
if ([[[itemArray objectAtIndex:indexPath.row] valueForKey:@"calorie"] length] <= 5)
cal = [[itemArray objectAtIndex:indexPath.row] valueForKey:@"calorie"];
else
cal = [[[itemArray objectAtIndex:indexPath.row] valueForKey:@"calorie"] substringWithRange:NSMakeRange(0, 5)];
cell.detailTextLabel.text =
[NSString stringWithFormat:@"Prot: %@ Carb: %@ Fat: %@ Cal: %@", pval, cval, fval, cal] ;
return cell;
}
necesito botón "cargar más" en la fila para mi vista de tabla para cargar los registros de SQLite DB, en particular período de límite de
hola no sé cómo puedo cambiar las consultas de sqlite en los eventos anteriores que usted ha dado para editar ... si es posible, puede editar mi código que he dado en mi pregunta ... y puede saber cómo funcionará el botón Cargar más si hago clic en – Ramz
Andrei funciona parcialmente ... ¿Cómo puedo eliminar esta opción de carga más cuando los datos seleccionados previamente en la barra de búsqueda ... si está allí no queremos cargar más ... – Ramz
@Ramkumar: No entiendo tu última pregunta. ¿Que estás tratando de hacer? – Andrei