# Titanium.UI.RefreshControl

The RefreshControl is a representation of the native iOS UIRefreshControl and Android SwipeRefreshLayout.

Availability
6.2.0
3.2.0
9.2.0

# Overview

Android iOS
Android

You use a RefreshControl with a Titanium.UI.TableView, Titanium.UI.ListView or Titanium.UI.ScrollView object. It provides an alternate method to implement pull to refresh functionality provided by Titanium.UI.TableView.headerPullView and Titanium.UI.ListView.pullView properties.

Use the Titanium.UI.createRefreshControl method to create a RefreshControl.

Important iOS 10+ Note: If you use the RefreshControl inside a Titanium.UI.Window that has the largeTitleEnabled property set to true, you also need to set the extendEdges property to either [Ti.UI.EXTEND_EDGE_TOP] or [Ti.UI.EXTEND_EDGE_ALL] in order to prevent a flickering of the refresh spinner. In Titanium SDK 8+, the extendEdges property will be set to [Ti.UI.EXTEND_EDGE_ALL] by default to match the native behavior.

# Examples

# Basic Pull To Refresh

A basic sample showing the usage of refreshstart event with endRefreshing functionality.

const win = Ti.UI.createWindow();
let counter = 0;
function genData() {
    const data = [];
    for (let i = 1; i <= 3; i++) {
        data.push({ properties:{ title: `ROW ${counter + i}` } });
    }
    counter += 3;
    return data;
}
const section = Ti.UI.createListSection();
section.items = genData();
const control = Ti.UI.createRefreshControl({
    tintColor: 'red'
});
const listView = Ti.UI.createListView({
    sections: [section],
    refreshControl: control
});
control.addEventListener('refreshstart', () => {
    Ti.API.info('refreshstart');
    setTimeout(() => {
        Ti.API.debug('Timeout');
        section.appendItems(genData());
        control.endRefreshing();
    }, 2000);
});
win.add(listView);
win.open();

# Alloy example

TableView with a RefreshControl

<Alloy>
    <Window>
        <TableView id="table">
          <RefreshControl id="refresh" onRefreshstart="refreshstart"/>
            <TableViewSection id="sectionFruit" headerTitle="Fruit">
                <TableViewRow title="Apple"/>
                <TableViewRow title="Bananas"/>
            </TableViewSection>
        </TableView>
    </Window>
</Alloy>
function refreshstart(e){
  $.refresh.endRefreshing();
}

$.index.open();

# Properties

# apiName READONLY

Availability
6.2.0
3.2.0
9.2.0
apiName :String

The name of the API that this proxy corresponds to.

The value of this property is the fully qualified name of the API. For example, Titanium.UI.Button returns Ti.UI.Button.


# backgroundColor

Availability
12.4.0
12.4.0
backgroundColor :String | Titanium.UI.Color

The background color for the refresh control, as a color name or hex triplet.

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


# bubbleParent

Availability
6.2.0
3.2.0
9.2.0
bubbleParent :Boolean

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

Some proxies (most commonly views) have a relationship to other proxies, often established by the add() method. For example, for a button added to a window, a click event on the button would bubble up to the window. Other common parents are table sections to their rows, table views to their sections, and scrollable views to their views. Set this property to false to disable the bubbling to the proxy's parent.

Default: true


# lifecycleContainer

Availability
6.2.0

The Window or TabGroup whose Activity lifecycle should be triggered on the proxy.

If this property is set to a Window or TabGroup, then the corresponding Activity lifecycle event callbacks will also be called on the proxy. Proxies that require the activity lifecycle will need this property set to the appropriate containing Window or TabGroup.


# offset CREATION ONLY

Availability
12.7.0

Offset of the refresh control view.


# tintColor

Availability
6.2.0
3.2.0
9.2.0
tintColor :String | Titanium.UI.Color

The tint color for the refresh control, as a color name or hex triplet.

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


# title

Availability
3.2.0
9.2.0

The attributed title of the control.

Title text is only supported on iOS. Android will ignore this property.

# Methods

# addEventListener

Availability
6.2.0
3.2.0
9.2.0
addEventListener(name, callback) void

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

Parameters

Name Type Description
name String

Name of the event.

callback Callback<Titanium.Event>

Callback function to invoke when the event is fired.

Returns

Type
void

# applyProperties

Availability
6.2.0
3.2.0
9.2.0
applyProperties(props) void

Applies the properties to the proxy.

Properties are supplied as a dictionary. Each key-value pair in the object is applied to the proxy such that myproxy[key] = value.

Parameters

Name Type Description
props Dictionary

A dictionary of properties to apply.

Returns

Type
void

# beginRefreshing

Availability
6.2.0
3.2.0
9.2.0
beginRefreshing() void

Tells the control that a refresh operation was started programmatically.

Call this method when an external event source triggers a programmatic refresh of your table. This method updates the state of the refresh control to reflect the in-progress refresh operation. When the refresh operation ends, be sure to call the endRefreshing method to return the control to its default state. Note: When triggering the refreshing programmatically, the styling is not applied and the refresh control is tinted in the native gray.

Returns

Type
void

# endRefreshing

Availability
6.2.0
3.2.0
9.2.0
endRefreshing() void

Tells the control that a refresh operation has ended.

Call this method at the end of any refresh operation (whether it was initiated programmatically or by the user) to return the refresh control to its default state.

Returns

Type
void

# fireEvent

Availability
6.2.0
3.2.0
9.2.0
fireEvent(name[, event]) void

Fires a synthesized event to any registered listeners.

Parameters

Name Type Description
name String

Name of the event.

event Dictionary

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

Returns

Type
void

# removeEventListener

Availability
6.2.0
3.2.0
9.2.0
removeEventListener(name, callback) void

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

Multiple listeners can be registered for the same event, so the callback parameter is used to determine which listener to remove.

When adding a listener, you must save a reference to the callback function in order to remove the listener later:

var listener = function() { Ti.API.info("Event listener called."); }
window.addEventListener('click', listener);

To remove the listener, pass in a reference to the callback function:

window.removeEventListener('click', listener);

Parameters

Name Type Description
name String

Name of the event.

callback Callback<Titanium.Event>

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

Returns

Type
void

# Events

# refreshstart

Availability
6.2.0
3.2.0
9.2.0

Fired in response to a user initiated an action to refresh the contents of the table view, list view or scroll view.

Properties

Name Type Description
bubbles Boolean

This is false. This event does not bubble

source Object

Source object that fired the event.

type String

Name of the event fired.

bubbles Boolean

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

cancelBubble Boolean

Set to true to stop the event from bubbling.


# refreshend

Availability
6.2.0
6.0.0
9.2.0

Fired in response to a user finished action to refresh the contents of the table view, list view or scroll view.

Properties

Name Type Description
bubbles Boolean

This is false. This event does not bubble

source Object

Source object that fired the event.

type String

Name of the event fired.

bubbles Boolean

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

cancelBubble Boolean

Set to true to stop the event from bubbling.