[TIMOB-2126] Android: Support Scroll Event on Tableview
| GitHub Issue | n/a |
|---|---|
| Type | New Feature |
| Priority | Medium |
| Status | Closed |
| Resolution | Duplicate |
| Resolution Date | 2020-02-12T15:27:19.000+0000 |
| Affected Version/s | Release 2.1.0 |
| Fix Version/s | n/a |
| Components | Android |
| Labels | core |
| Reporter | Don Thorp |
| Assignee | Rene Pot |
| Created | 2011-04-15T03:11:12.000+0000 |
| Updated | 2020-02-12T15:27:19.000+0000 |
Description
Should fire the standard event.
Attachments
| File | Date | Size |
|---|---|---|
| app.js | 2011-10-03T12:41:32.000+0000 | 876 |
x and y are not fired and neither is contentOffset, making it impossible to know the scroll location. x and y need to be fired on the 'scroll' event.
Attached test file.
up!
One may work around using the following Droid properties of Scroll event (firstVisibleItem, totalItemCount, visibleItemCount) - Tested on 2.1.0.GA:
app.js
Ti.UI.setBackgroundColor('#000'); var win = Ti.UI.createWindow({ backgroundColor: 'black', exitOnClose: true, fullscreen: false, title: 'TableView Demo' }); // generate random number, used to make each row appear distinct for this example function randomInt(max){ return Math.floor(Math.random() * max) + 1; } var IMG_BASE = 'https://github.com/appcelerator/titanium_mobile/raw/master/demos/KitchenSink/Resources/images/'; var defaultFontSize = Ti.Platform.name === 'android' ? 16 : 14; var tableData = []; for (var i=1; i<=20; i++){ var row = Ti.UI.createTableViewRow({ className:'forumEvent', // used to improve table performance selectedBackgroundColor:'white', rowIndex:i, // custom property, useful for determining the row during events height:110 }); var imageAvatar = Ti.UI.createImageView({ image: IMG_BASE + 'custom_tableview/user.png', left:10, top:5, width:50, height:50 }); row.add(imageAvatar); var labelUserName = Ti.UI.createLabel({ color:'#576996', font:{fontFamily:'Arial', fontSize:defaultFontSize+6, fontWeight:'bold'}, text:'Fred Smith ' + i, left:70, top: 6, width:200, height: 30 }); row.add(labelUserName); var labelDetails = Ti.UI.createLabel({ color:'#222', font:{fontFamily:'Arial', fontSize:defaultFontSize+2, fontWeight:'normal'}, text:'Replied to post with id ' + randomInt(1000) + '.', left:70, top:44, width:360 }); row.add(labelDetails); var imageCalendar = Ti.UI.createImageView({ image:IMG_BASE + 'custom_tableview/eventsButton.png', left:70, bottom: 2, width:32, height: 32 }); row.add(imageCalendar); var labelDate = Ti.UI.createLabel({ color:'#999', font:{fontFamily:'Arial', fontSize:defaultFontSize, fontWeight:'normal'}, text:'on ' + randomInt(30) + ' Nov 2012', left:105, bottom:10, width:200, height:20 }); row.add(labelDate); tableData.push(row); } var tableView = Ti.UI.createTableView({ backgroundColor:'white', data:tableData }); win.add(tableView); win.open(); tableView.addEventListener('scroll', function(e) { //Ti.API.info('x|y ' + e.contentOffset.x + '|' + e.contentOffset.y);//it will be undefined indeed ... Ti.API.info('-------------------'); Ti.API.info( 'firstVisibleItem : Number - Row index of the topmost visible row in the view: ' + e.firstVisibleItem); Ti.API.info( 'totalItemCount : Number - Total number of rows in the view: ' + e.totalItemCount ); Ti.API.info( 'visibleItemCount : Number - Number of rows currently visible in the view: '+ e.visibleItemCount ); });Occurs on : SDK : 7.3.0.v20180803101103 CLI : 7.0.4 Android Emulator OS 6.0
Is already implemented