Skip to content
Titanium SDK
Version12.6.1

You are reading 12.6.1. See this page in 13.4.1.

Titanium.UI.TableViewRow

viewAndroidiPhoneiPadmacOSsince 0.9

Extends Titanium.UI.ViewTitanium.Proxy

A table view row is an individual item in a table, organized into table view sections.

Use the Titanium.UI.createTableViewRow method or <TableViewRow> Alloy element to create a table view row.

These may be explicitly added to TableViewSection objects, which are applied to a TableView. If a table section is not specified, one will be automatically created.

A row's contents can be as simple as a single line of text, or comprised of a completely customized layout of child views.

Creating Table View Rows

Rows may be created using the properties directly available on the TableViewRow object, to achieve the following:

  • Row title to display the text content in the row.
  • Background color and background image.
  • Images on the left and right sides of the row.
  • System decorations, such as checkboxes.

Alternatively, custom layouts of multiple lines of text, different fonts, and additional images or controls can be created by adding child views to the row. In this case, the row's title property should not be set.

As events automatically bubble/propogate to parent views, a listener may be placed on the table view to detect events fired from the rows. The benefit is that it is not necessary to explicitly create a listener for every individual row.

See the TableView description and examples section for more information about creating table rows.

Platform Implementation Notes

The top, left and other positional parameters are not used for their usual purposes, because the table view row is automatically positioned by its parent.

On Android, these properties are used to position the content (title) inside the row. For example, setting top to 20 moves the title down from the top of the row.

On iOS, these values have no effect.

Also, note that the selected text color, selectedColor, can only be set on iOS. On Android, the text color does not change when the row is selected.

Row Swipe Gestures (Android and iOS)

A common requirement is to enable the user to interact with table rows using swipe gestures. As this event is not available for the TableViewRow object, it will not "bubble up" to the TableView, where a Titanium.UI.TableView.swipe is recognized.

A typical solution is to use a standard view as a container, or wrapper, for all each row's child views, because it recognizes Titanium.UI.View.swipe events and allows them to pass to the table. Each child view should have touch events disabled, so that the container view provides a reliable source for these events. Refer to the "Row Swipe Gestures" example for a demonstration.

For iOS, read the Row Editing and Moving Modes notes on TableView regarding the interactions between edit modes and swipes.

Examples

Simple Table View Row example

Create a table view row containing a red square view.

var row = Titanium.UI.createTableViewRow();
var view = Titanium.UI.createView({
  backgroundColor:'red',
  width: 20, height: 20
});
row.add(view);

Row Swipe Gestures

Create a table of rows. When a row is swiped, output its ID to the log.

var tableData = [];

var win = Ti.UI.createWindow({ backgroundColor: 'white' });

var table = Ti.UI.createTableView({ objName: 'table' });

for (var i = 0; i <= 20; i++){
  var row = Ti.UI.createTableViewRow({
    className: 'row',
    objName: 'row',
    touchEnabled: true,
    height: 100
  });

  var enabledWrapperView = Ti.UI.createView({
    backgroundColor:'#008FD5',
    objName: 'enabledWrapperView',
    rowID: i,
    width: Ti.UI.FILL, height: '100%'
  });

  var disabledWrapperView = Ti.UI.createView({
    backgroundColor:'#A2E0FF',
    objName: 'disabledWrapperView',
    touchEnabled: false,
    width: 300, height: '80%'
  });
  enabledWrapperView.add(disabledWrapperView);

  var label = Ti.UI.createLabel({
    backgroundColor:'#313F48',
    color: 'white',
    objName: 'label',
    text: i,
    touchEnabled: false,
    left: 0,
    width: 200
  });
  disabledWrapperView.add(label);

  row.add(enabledWrapperView);
  tableData.push(row);
}

table.data = tableData;

table.addEventListener('swipe', function(e){
  if (e.source && e.source.objName !== 'table'){
    Ti.API.info('Row swiped: ' + e.source);
    Ti.API.info('Row swiped: ' + e.source.objName);
    Ti.API.info('Row ID : ' + e.source.rowID);
  }
});

win.add(table);
win.open();

Alloy XML Markup

Previous simple table view row example as an Alloy view.

<Alloy>
    <TableViewRow id="row">
        <View id="view" backgroundColor="red" width="20" height="20"/>
    </TableViewRow>
</Alloy>

Properties 94

apiName

Stringsince Android 3.2.0, iPhone 3.2.0, iPad 3.2.0, macOS 9.2.0read-only

Inherited from Titanium.Proxy

The name of the API that this proxy corresponds to.

Inherited from Titanium.UI.View

A background gradient for the view.

Linear and Radial Gradients

The following code excerpt creates two views, one with a linear gradient and one with a radial gradient.

var win1 = Titanium.UI.createWindow({
    title:'Tab 1',
    backgroundColor:'#fff',
    layout: 'vertical'
});

var radialGradient = Ti.UI.createView({
    top: 10,
    width: 100,
    height: 100,
    backgroundGradient: {
        type: 'radial',
        startPoint: { x: 50, y: 50 },
        endPoint: { x: 50, y: 50 },
        colors: [ 'red', 'blue'],
        startRadius: 50,
        endRadius: 0,
        backfillStart: true
    }
});
var linearGradient = Ti.UI.createView({
    top: 10,
    width: 100,
    height: 100,
    backgroundGradient: {
        type: 'linear',
        startPoint: { x: '0%', y: '50%' },
        endPoint: { x: '100%', y: '50%' },
        colors: [ { color: 'red', offset: 0.0}, { color: 'blue', offset: 0.25 }, { color: 'red', offset: 1.0 } ],
    }
});
win1.add(radialGradient);
win1.add(linearGradient);
win1.open();

borderRadius

Number | String | Array<Number> | Array<String>

Inherited from Titanium.UI.View

Radius for the rounded corners of the view's border.

Default: 0

bubbleParent

Booleansince Android 3.0.0, iPhone 3.0.0, iPad 3.0.0, macOS 9.2.0

Inherited from Titanium.Proxy

Indicates if the proxy will bubble an event to its parent.

Default: true

className

StringAndroid

Class name for the row.

A class name represents a unique row layout.

A table view row must have a unique class name if the row layout is unique. However, use the same name for rows that have the same structural layout (even if the content is different) to provide maximum rendering performance.

For example, if some rows include images and some rows do not, you would have two class names, one for image rows and one for plain rows.

This property exists on iOS, but is ignored.

Default text color of the row when not selected, as a color name or hex triplet.

For information about color values, see the "Colors" section of Titanium.UI.

On Android, the default text color is black if the background color is closer to white otherwise the default text color is white also selectedColor is not supported so the text is always displayed in this color.

Text to display on the delete button when editable is enabled

When editable is enabled on the TableViewRow, use this property to change the title of the delete button.

editable

Booleansince Android 9.3.0, iPhone 3.2.0, iPad 3.2.0, macOS 9.2.0

Determines the rows' editable behavior, which allows them to be deleted by the user when the table is in editing or moving mode.

If this property is not explicitly set, it will return undefined and the row's editable behavior will be determined by its parent table's editable property.

See the Titanium.UI.TableView description section for a full explanation of the TableView's row editing and moving modes.

If you want to change the title of the delete button, use the [deleteButtonTitle](Titanium.UI.TableViewRow.deleteButtonTitle] property

Default: undefined

elevation

NumberAndroidsince 5.0.0Android 5+

Inherited from Titanium.UI.View

Base elevation of the view relative to its parent in pixels.

filterAlwaysInclude

Booleansince 12.2.0

This row will always be visible when you filter your content.

Default: false

focusable

BooleanAndroid

Inherited from Titanium.UI.View

Whether view should be focusable while navigating with the trackball.

Default: false

Font to use for the row title.

Default: System default font.

footerTitle

Stringsince 10.0.0

The footer title of the row.

The footerTitle property is used to assign a footer title to a row. It has the same effect as setting the footerTitle property of a Titanium.UI.TableViewSection.

hasCheck

Boolean

Determines whether a system-provided checkmark is displayed on the right-hand side of the row.

Default: false

hasChild

Boolean

Determines whether a system-provided arrow is displayed on the right-hand side of the row.

The hasChild flag is used to indicate to the user that clicking on the row displays more detailed information.

On iOS, this is specifically used when clicking on the row navigates to the next table view in a heirarchy of table views.

Default: false

hasDetail

Booleansince 9.3.0

Determines whether a system-provided detail disclosure button is displayed on the right-hand side of the row.

The hasDetail flag is used to indicate to the user that more details are available on the row.

Specifically on iOS the detail disclosure button indicates that clicking on the row results in a detail view of that item.

The detail property in the click event is set to true if the click occurred on the detail button itself, false if the click occurs anywhere else in the row.

For rows that have hasDetail set to false, the detail flag is always false.

Default: false

headerTitle

Stringsince 10.0.0

The header title of the row.

The headerTitle property is used to assign a header title to a row. It has the same effect as setting the headerTitle property of a Titanium.UI.TableViewSection.

indentionLevel

NumberiPhoneiPadmacOS

Indention level for the row.

Indentation values greater than 0 indent the row text.

Default: 0

layout

String

Inherited from Titanium.UI.View

Specifies how the view positions its children. One of: 'composite', 'vertical', or 'horizontal'.

left

Number | String

Inherited from Titanium.UI.View

View's left position, in platform-specific units.

leftImage

String

Image to render in the left image area of the row, specified as a local path or URL.

moveable

Booleansince Android 9.3.0, iPhone 3.2.0, iPad 3.2.0, macOS 9.2.0

Determines the rows' moveable behavior, which allows them to be re-ordered by the user when the table is in editing or moving mode.

If this property is not explicitly set, it will return undefined and the row's moveable behavior will be determined by its parent table's moveable property.

See the Titanium.UI.TableView description section for a full explanation of the TableView's row editing and moving modes.

Default: undefined

rect

DimensionWithAbsolutessince 2.0.0read-only

Inherited from Titanium.UI.View

The bounding box of the view relative to its parent, in system units.

Image to render in the right image area of the row, specified as a local path or URL.

rotation

NumberAndroidiPhoneiPadsince Android 5.4.0, iPhone 12.3.0, iPad 12.3.0

Inherited from Titanium.UI.View

Clockwise 2D rotation of the view in degrees.

Deprecated since 10.0.0

This property has been deprecated in favor of <Titanium.UI.TableViewRow.backgroundSelectedColor>.

Background color to render when the row is selected, as a color name or hex triplet.

For information about color values, see the "Colors" section of Titanium.UI.

selectedBackgroundImage

Stringdeprecated

Deprecated since 10.0.0

This property has been deprecated in favor of <Titanium.UI.TableViewRow.backgroundSelectedImage>.

Background image to render when the row is selected.

selectedColor

String | Titanium.UI.ColoriPhoneiPadmacOS

Color of the row text when the row is selected, as a color name or hex triplet.

For information about color values, see the "Colors" section of Titanium.UI.

title

String

Text to display on the row.

Do not specify if using views as children of the row.

tooltip

Stringsince 12.1.0iOS 15.0+

Inherited from Titanium.UI.View

The default text to display in the control's tooltip.

touchFeedback

BooleanAndroidsince 6.1.0

Inherited from Titanium.UI.View

A material design visual construct that provides an instantaneous visual confirmation of touch point.

Default: false

translationX

NumberAndroidsince 5.0.0

Inherited from Titanium.UI.View

Horizontal location of the view relative to its left position in pixels.

Methods 16

Inherited from Titanium.UI.View

Adds a child to this view's hierarchy.

Parameters
ParametersTypeDescription
viewTitanium.UI.View | Array<Titanium.UI.View>

View to add to this view's hierarchy.

You may pass an array of views, e.g. view.add([subview1, subview2].

Inherited from Titanium.Proxy

Adds the specified callback as an event listener for the named event.

Parameters
ParametersTypeDescription
nameString

Name of the event.

callbackCallback<Titanium.Event>

Callback function to invoke when the event is fired.

4 fields
bubbles Boolean

True if the event will try to bubble up if possible.

cancelBubble Boolean

Set to true to stop the event from bubbling.

source Object

Source object that fired the event.

type String

Name of the event fired.

convertPointToView

since Android 1.8, iPhone 1.8, iPad 1.8, macOS 9.2.0

Inherited from Titanium.UI.View

Translates a point from this view's coordinate system to another view's coordinate system.

Parameters
ParametersTypeDescription
pointPoint

A point in this view's coordinate system.

If this argument is missing an x or y property, or the properties can not be converted into numbers, an exception will be raised.

destinationViewTitanium.UI.View

View that specifies the destination coordinate system to convert to. If this argument is not a view, an exception will be raised.

Returns Point

Inherited from Titanium.Proxy

Fires a synthesized event to any registered listeners.

Parameters
ParametersTypeDescription
nameString

Name of the event.

event?Dictionary

A dictionary of keys and values to add to the Titanium.Event object sent to the listeners.

getViewById

since 6.1.0

Inherited from Titanium.UI.View

Returns the matching view of a given view ID.

Parameters
ParametersTypeDescription
idString

The ID of the view that should be returned. Use the id property in your views to enable it for indexing in this method.

Inherited from Titanium.UI.View

Hides this view.

Parameters
ParametersTypeDescription
options?AnimatedOptions

Animation options for Android only. Since SDK 5.1.0 and used only on Android 5.0+

Determines whether to enable a circular reveal animation. Note that the default here is equivalent to passing in { animated: false }

insertAt

since 3.3.0

Inherited from Titanium.UI.View

Inserts a view at the specified position in the children array.

Parameters
ParametersTypeDescription
paramsViewPositionOptions

Pass an object that specifies the view to insert and optionally at which position (defaults to end)

2 fields
position? Number

Position in the children array of the view element to replace.

view Titanium.UI.View

View to insert. Required.

Inherited from Titanium.Proxy

Removes the specified callback as an event listener for the named event.

Parameters
ParametersTypeDescription
nameString

Name of the event.

callbackCallback<Titanium.Event>

Callback function to remove. Must be the same function passed to addEventListener.

4 fields
bubbles Boolean

True if the event will try to bubble up if possible.

cancelBubble Boolean

Set to true to stop the event from bubbling.

source Object

Source object that fired the event.

type String

Name of the event fired.

replaceAt

since 3.3.0

Inherited from Titanium.UI.View

Replaces a view at the specified position in the children array.

Parameters
ParametersTypeDescription
paramsViewPositionOptions

Pass an object with the view to insert and the position of the view to replace. In this case the position property is required.

2 fields
position? Number

Position in the children array of the view element to replace.

view Titanium.UI.View

View to insert. Required.

Inherited from Titanium.UI.View

Makes this view visible.

Parameters
ParametersTypeDescription
options?AnimatedOptions

Animation options for Android only. Since SDK 5.1.0 and only used on Android 5.0+

Determines whether to enable a circular reveal animation. Note that the default here is equivalent to passing in { animated: false }

Inherited from Titanium.UI.View

Returns an image of the rendered view, as a Blob.

Parameters
ParametersTypeDescription
callback?Callback<Titanium.Blob>

Function to be invoked upon completion. If non-null, this method will be performed asynchronously. If null, it will be performed immediately.

honorScaleFactor?Boolean

Determines whether the image is scaled based on scale factor of main screen. (iOS only)

When set to true, image is scale factor is honored. When set to false, the image in the blob has the same dimensions for retina and non-retina devices.

Events 8

Fired when a table row is clicked by the user.

Event properties
Event propertiesTypeDescription
detailBoolean

Indicates whether the detail button was clicked. Only true if row.hasDetail is true and the detail button was clicked.

indexNumber

Row index.

rowTitanium.UI.TableViewRow

Table view row object.

rowDataDictionary<Titanium.UI.TableViewRow>

Dictionary containing the properties set on the row.

searchModeBoolean

Boolean to indicate if the table is in search mode.

sectionTitanium.UI.TableViewSection

Table view section object, if the clicked row is contained in a section.

xNumber

X coordinate of the event from the source view's coordinate system.

yNumber

Y coordinate of the event from the source view's coordinate system.

keypressed

since Android 3.1.0, iPhone 5.4.0, iPad 5.4.0, macOS 9.2.0

Inherited from Titanium.UI.View

Fired when a hardware key is pressed in the view.

Event properties
Event propertiesTypeDescription
keyCodeNumber

The code for the physical key that was pressed. For more details, see KeyEvent. This API is experimental and subject to change.

Inherited from Titanium.UI.View

Fired when the device detects a swipe gesture against the view.

Event properties
Event propertiesTypeDescription
directionString

Direction of the swipe--either 'left', 'right', 'up', or 'down'.

xNumber

X coordinate of the event's endpoint from the source view's coordinate system.

yNumber

Y coordinate of the event's endpoint from the source view's coordinate system.

obscuredBoolean

Returns true if the swipe passed through an overlapping window belonging to another app.

This is a security feature to protect an app from "tapjacking", where a malicious app can use a system overlay to intercept touch events in your app or to trick the end-user to tap on UI in your app intended for the overlay.

touchcancel

iPhoneiPadmacOS

Fired when a touch gesture is interrupted by the device.

Generated in various circumstances, including an incoming call to allow the UI to clean up state.

On Android and iOS, be aware that a row or table touch event and a table scroll event cannot occur concurrently. If a table begins to scroll during a touch event, the appropriate row or table touchcancel event fire before the scroll event begins.

Event properties
Event propertiesTypeDescription
xNumber

X coordinate of the event from the source view's coordinate system.

yNumber

Y coordinate of the event from the source view's coordinate system.

touchend

iPhoneiPadmacOS

Fired when a touch gesture is complete.

On Android and iOS, be aware that a row or table touch event and a table scroll event cannot occur concurrently. If a table begins to scroll during a touch event, the appropriate row or table touchcancel event fire before the scroll event begins.

Event properties
Event propertiesTypeDescription
xNumber

X coordinate of the event from the source view's coordinate system.

yNumber

Y coordinate of the event from the source view's coordinate system.

touchstart

iPhoneiPadmacOS

Fired as soon as the device detects a touch gesture against this view.

On Android and iOS, be aware that a row or table touch event and a table scroll event cannot occur concurrently. If a table begins to scroll during a touch event, the appropriate row or table touchcancel event fire before the scroll event begins.

Event properties
Event propertiesTypeDescription
xNumber

X coordinate of the event from the source view's coordinate system.

yNumber

Y coordinate of the event from the source view's coordinate system.