Awesome
Alloy Pull to Refresh Widget
NOTE: Starting TiSDK 6.2 this widget is no longer needed as RefreshControl is build in for Android like previously for iOS, you can stick with the Ti.UI.RefreshControl
The Alloy Pull to Refresh widget is a cross-platform no-brainer wrapper of Ti.UI.RefreshControl for iOS and Ivan's fork of Ti.SwipeRefreshLayout for Android.
Before version 2.0.0 this widget emulated the native Pull to Refresh concept for Ti.UI.TableView
on both platforms. Since 2.0.0 it uses the native controls now available in Titanium Core and through Ivan's module for both Ti.UI.TableView
and Ti.UI.ListView
.
Also take a look at the Infinite Scroll widget.
Examples
Android
iOS
Usage
-
Download and install the distribution 0.4.1 or later of Ivan's fork of Ti.SwipeRefreshLayout.
-
Install the widget via gitTio:
gittio install nl.fokkezb.pullToRefresh
`npm i --save nl.fokkezb.pulltorefresh`
3. Wrap the widget around your <ListView>
or <TableView>
in the view:
<Alloy>
<Collection src="myCollection" />
<Window>
<Widget id="ptr" src="nl.fokkezb.pullToRefresh" onRelease="myRefresher">
<ListView>
<ListSection dataCollection="myCollection">
<ListItem title="{title}" />
</ListSection>
</ListView>
</Widget>
</Window>
</Alloy>
**NOTE:** The `<Widget />` tag can't be the root element due to an Alloy limitation!
4. Add your myRefresher
function to the controller and call the e.hide()
callback when you're done:
function myRefresher(e) {
myCollection.fetch({
success: e.hide,
error: e.hide
});
}
5. Call the widget's refresh()
to programmatically trigger the (initial) refresh:
$.ptr.refresh();
6. To pass arguments to Ti.UI.createRefreshControl
and createSwipeRefresh()
simply pass them to the widget as attributes of <Widget>
or second arguments of createWidget()
.
Methods
Both platforms share the same API:
Function | Parameters | Usage |
---|---|---|
refresh | Manually trigger pull + release | |
show | Show the loading indicator | |
hide | Hide the loading indicator | |
getList | Get the list the widget is bound to | |
getControl | Get the refresh control |
Changelog
- 3.0
- Removes
setTitle()
. - Passes all arguments/attributes on to
Ti.UI.createRefreshControl()
for iOS (e.g. to set title or tintColor) andcreateSwipeRefresh()
for Android.
- Removes
- 2.2
- 2.1
- Adds support for TiCollectionView by @adesugbaa.
- 2.0
- Rewritten to use native API's.
- 1.5
- Workaround for regression in Alloy 1.3.0-cr
- Closes #17 by checking source of events
- New
top
option for compatibility withTi.UI.Window.extendEdges
on iOS7 - Arrow now properly hidden on Android, using opacity
- Default style updated to match Twitter on iOS7
- 1.4
- Now compatible with Android and other OS!
- 1.3
- From now on declared in the XML view instead of the controller!
- Splitted
init
intosetOptions
andattach
- Renamed
remove
todettach
- Renamed
trigger
torefresh
to not interfere with BackBone
- 1.2
- Retina arrow images, including new (default) grey one
- Removed text showing last update for more clear view
- Easier styling
- 1.1
- Exposed new API functions to
show
/hide
the view, set thedate
andtrigger
the widget manually. - Renamed
load
parameter toloader
in line with upcomming widgets.
- Exposed new API functions to
- 1.0
- Initial version