android-pulltorefresh
DEPRECATED This project aims to provide a reusable pull to refresh widget for Android.
Top Related Projects
DEPRECATED
Phoenix Pull-to-Refresh
Ultra Pull to Refresh for Android. Support all the views.
This component like SwipeRefreshLayout, it is more beautiful than SwipeRefreshLayout.
🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动,具有极强的扩展性,集成了几十种炫酷的Header和 Footer。
Quick Overview
Android-PullToRefresh is a library that provides a simple way to implement the "pull-to-refresh" UI pattern in Android applications. It allows users to pull down on a list or scrollable view to trigger a refresh action, commonly used for updating content in mobile apps.
Pros
- Easy integration with existing Android projects
- Customizable appearance and behavior
- Supports both ListView and ScrollView
- Lightweight and efficient implementation
Cons
- Not actively maintained (last update was in 2014)
- Limited compatibility with newer Android versions and material design
- Lacks support for RecyclerView, which is now the preferred choice over ListView
- May require additional work to integrate with modern Android architecture components
Code Examples
- Basic implementation with a ListView:
PullToRefreshListView pullToRefreshView = (PullToRefreshListView) findViewById(R.id.pull_to_refresh_listview);
pullToRefreshView.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
// Your code to refresh the list contents
// Make sure you call listView.onRefreshComplete() when done
pullToRefreshView.onRefreshComplete();
}
});
- Customizing the pull label:
PullToRefreshListView pullToRefreshView = (PullToRefreshListView) findViewById(R.id.pull_to_refresh_listview);
pullToRefreshView.getLoadingLayoutProxy().setPullLabel("Pull to refresh...");
pullToRefreshView.getLoadingLayoutProxy().setReleaseLabel("Release to refresh...");
pullToRefreshView.getLoadingLayoutProxy().setRefreshingLabel("Loading...");
- Using with a ScrollView:
PullToRefreshScrollView pullToRefreshView = (PullToRefreshScrollView) findViewById(R.id.pull_to_refresh_scrollview);
pullToRefreshView.setOnRefreshListener(new OnRefreshListener<ScrollView>() {
@Override
public void onRefresh(PullToRefreshBase<ScrollView> refreshView) {
// Your code to refresh the content
pullToRefreshView.onRefreshComplete();
}
});
Getting Started
- Add the library to your project's
build.gradle
file:
dependencies {
implementation 'com.github.johannilsson:android-pulltorefresh:0.6'
}
- Add the PullToRefreshListView or PullToRefreshScrollView to your layout XML:
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull_to_refresh_listview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
- Initialize and use the PullToRefreshListView in your Activity or Fragment:
PullToRefreshListView pullToRefreshView = (PullToRefreshListView) findViewById(R.id.pull_to_refresh_listview);
pullToRefreshView.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
// Your refresh logic here
pullToRefreshView.onRefreshComplete();
}
});
Competitor Comparisons
DEPRECATED
Pros of Android-PullToRefresh
- More customizable with various styles and animations
- Supports a wider range of views (ListView, GridView, WebView, ScrollView, etc.)
- Better documentation and examples
Cons of Android-PullToRefresh
- Larger library size due to additional features
- Slightly more complex implementation for basic use cases
- Last updated in 2014, potentially outdated for newer Android versions
Code Comparison
android-pulltorefresh:
PullToRefreshListView pullToRefreshView = (PullToRefreshListView) findViewById(R.id.pull_to_refresh_listview);
pullToRefreshView.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
// Your code to refresh the list contents
}
});
Android-PullToRefresh:
PullToRefreshListView mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
// Your code to refresh the list contents
}
});
Both libraries offer similar basic functionality, but Android-PullToRefresh provides more options for customization and supports a broader range of views. However, it may be overkill for simpler projects where android-pulltorefresh could suffice. The code implementation is slightly more verbose in Android-PullToRefresh but offers more flexibility.
Phoenix Pull-to-Refresh
Pros of Phoenix
- More visually appealing and customizable animations
- Supports both pull-to-refresh and pull-to-load-more functionalities
- Better performance due to optimized rendering
Cons of Phoenix
- Larger library size, potentially increasing app size
- Steeper learning curve due to more complex implementation
- Less frequently updated compared to android-pulltorefresh
Code Comparison
Phoenix:
val pullToRefreshView = findViewById<PullToRefreshView>(R.id.pull_to_refresh)
pullToRefreshView.setOnRefreshListener {
// Refresh logic here
pullToRefreshView.setRefreshing(false)
}
android-pulltorefresh:
PullToRefreshListView pullToRefreshView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
pullToRefreshView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
// Refresh logic here
pullToRefreshView.onRefreshComplete();
}
});
Phoenix offers a more modern, Kotlin-based implementation with a simpler listener setup, while android-pulltorefresh uses a more verbose Java approach. Phoenix's code is generally more concise and easier to read, but may require familiarity with Kotlin.
Ultra Pull to Refresh for Android. Support all the views.
Pros of android-Ultra-Pull-To-Refresh
- More customizable and flexible, allowing for various UI styles and animations
- Supports multiple views (ListView, GridView, ScrollView, etc.)
- Actively maintained with recent updates and bug fixes
Cons of android-Ultra-Pull-To-Refresh
- Slightly more complex implementation due to increased flexibility
- Larger library size compared to android-pulltorefresh
Code Comparison
android-pulltorefresh:
PullToRefreshListView mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
// Do work to refresh the list here
}
});
android-Ultra-Pull-To-Refresh:
PtrFrameLayout frame = (PtrFrameLayout) findViewById(R.id.store_house_ptr_frame);
frame.setPtrHandler(new PtrHandler() {
@Override
public void onRefreshBegin(PtrFrameLayout frame) {
// Do work to refresh the list here
}
});
Both libraries provide similar functionality, but android-Ultra-Pull-To-Refresh offers more customization options and supports a wider range of views. However, this comes at the cost of slightly more complex implementation and a larger library size. The code comparison shows that both libraries have similar usage patterns, with android-Ultra-Pull-To-Refresh requiring a bit more setup for advanced customization.
This component like SwipeRefreshLayout, it is more beautiful than SwipeRefreshLayout.
Pros of android-PullRefreshLayout
- More customizable with support for custom header and footer views
- Smoother animations and transitions during pull-to-refresh actions
- Better support for nested scrolling views (e.g., RecyclerView, NestedScrollView)
Cons of android-PullRefreshLayout
- Slightly more complex implementation compared to android-pulltorefresh
- May require more setup code for advanced customizations
- Less extensive documentation and community support
Code Comparison
android-pulltorefresh:
PullToRefreshListView mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
// Do work to refresh the list here
}
});
android-PullRefreshLayout:
PullRefreshLayout layout = (PullRefreshLayout) findViewById(R.id.swipeRefreshLayout);
layout.setOnRefreshListener(new PullRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
// Do work to refresh the list here
}
});
Both libraries offer similar basic functionality for implementing pull-to-refresh in Android applications. android-PullRefreshLayout provides more flexibility and customization options, while android-pulltorefresh offers a simpler implementation with broader community support. The choice between the two depends on the specific requirements of your project and the level of customization needed.
🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动,具有极强的扩展性,集成了几十种炫酷的Header和 Footer。
Pros of SmartRefreshLayout
- More feature-rich with various refresh animations and header styles
- Actively maintained with frequent updates and bug fixes
- Better support for modern Android development practices and Material Design
Cons of SmartRefreshLayout
- Larger library size due to additional features
- Steeper learning curve for developers due to more complex API
- May be overkill for simple pull-to-refresh implementations
Code Comparison
android-pulltorefresh:
PullToRefreshListView mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
// Do work to refresh the list here
}
});
SmartRefreshLayout:
RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
refreshLayout.setRefreshHeader(new ClassicsHeader(this));
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(RefreshLayout refreshlayout) {
// Do work to refresh the list here
}
});
Both libraries offer similar basic functionality, but SmartRefreshLayout provides more customization options and a more modern API. The code snippets demonstrate the slight differences in implementation, with SmartRefreshLayout offering more flexibility in header customization.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Pull To Refresh for Android
Note This library is deprecated, a swipe refresh layout is available in the v4 support library.
This project aims to provide a reusable pull to refresh widget for Android.
Repository at https://github.com/johannilsson/android-pulltorefresh.
Usage
Layout
<!--
The PullToRefreshListView replaces a standard ListView widget.
-->
<com.markupartist.android.widget.PullToRefreshListView
android:id="@+id/android:list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
Activity
// Set a listener to be invoked when the list should be refreshed.
((PullToRefreshListView) getListView()).setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
// Do work to refresh the list here.
new GetDataTask().execute();
}
});
private class GetDataTask extends AsyncTask<Void, Void, String[]> {
...
@Override
protected void onPostExecute(String[] result) {
mListItems.addFirst("Added after refresh...");
// Call onRefreshComplete when the list has been refreshed.
((PullToRefreshListView) getListView()).onRefreshComplete();
super.onPostExecute(result);
}
}
Last Updated
It's possible to add a last updated time using the method setLastUpdated
and onRefreshComplete
. The text provided to these methods will be set below
the Release to refresh text. Note that the time representation is not validated
replaces the previous text, which means that it's possible and recommended to
add a text similar to "Last Update: 15:23". This might be changed in future
versions.
1.5 Support
To use the widget on 1.5 the necessary drawables needs to be copied to that projects drawable folder. The drawables needed by the widget can be found in the drawable-hdpi folder in the library project.
Contributors
- Jason Knight - https://github.com/synthable
- Eddie Ringle - https://github.com/eddieringle
- Christof Dorner - https://github.com/chdorner
- Olof Brickarp - https://github.com/coolof
- James Smith - https://github.com/loopj
- Alex Volovoy - https://github.com/avolovoy
- Bo Maryniuk
- kidfolk
- Tim Mahoney
- Richard Guest
Are you using this widget?
If you are using this widget please feel free to add your app to the wiki.
License
Copyright (c) 2011 Johan Nilsson
Licensed under the Apache License, Version 2.0
Top Related Projects
DEPRECATED
Phoenix Pull-to-Refresh
Ultra Pull to Refresh for Android. Support all the views.
This component like SwipeRefreshLayout, it is more beautiful than SwipeRefreshLayout.
🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动,具有极强的扩展性,集成了几十种炫酷的Header和 Footer。
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot