Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-2126] Android: Support Scroll Event on Tableview

GitHub Issuen/a
TypeNew Feature
PriorityMedium
StatusClosed
ResolutionDuplicate
Resolution Date2020-02-12T15:27:19.000+0000
Affected Version/sRelease 2.1.0
Fix Version/sn/a
ComponentsAndroid
Labelscore
ReporterDon Thorp
AssigneeRene Pot
Created2011-04-15T03:11:12.000+0000
Updated2020-02-12T15:27:19.000+0000

Description

Should fire the standard event.

Attachments

FileDateSize
app.js2011-10-03T12:41:32.000+0000876

Comments

  1. Alan Leard 2011-10-03

    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.
  2. Alan Leard 2011-10-03

    Attached test file.
  3. hans schoenburg 2012-03-19

    up!
  4. Eduardo Gomez 2012-07-05

    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 );
       });
       
  5. Alan Hutton 2018-08-03

    Occurs on : SDK : 7.3.0.v20180803101103 CLI : 7.0.4 Android Emulator OS 6.0
  6. Rene Pot 2020-02-12

    Is already implemented

JSON Source