# Titanium.UI.RefreshControl
The RefreshControl is a representation of the native iOS UIRefreshControl and Android SwipeRefreshLayout.
# Overview
Android | iOS |
---|---|
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
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
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
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
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.
# tintColor
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
The attributed title of the control.
Title text is only supported on iOS. Android will ignore this property.
# Methods
# addEventListener
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
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
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
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
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
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 |
Returns
- Type
- void
# Events
# refreshstart
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
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. |