0% found this document useful (0 votes)
112 views25 pages

Android Pull To Refresh Tutorial - TuteCentral

Android Pull To Refresh

Uploaded by

Aditya Pabbaraju
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
112 views25 pages

Android Pull To Refresh Tutorial - TuteCentral

Android Pull To Refresh

Uploaded by

Aditya Pabbaraju
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

(http://www.tutecentral.

com)

Android Pull To Refresh


Android (http://www.tutecentral.com/android/) Jan 24, 2014

(http://www.tutecentral.com/wp-content/uploads/2014/03/pull_to_refresh_cover.png)

In this tutorial I’ll show you how to use pull to refresh feature in your android application. Pull to refresh is the
hottest android UI pattern used by developers in their applications to improve the usability. You can see this pull to
refresh feature in many android applications like Gmail,Facebook, Twitter etc… I google it to find some tutorials to
how implement this but I couldn’t find any article related to this topic. I did it my self. For a beginner it may be a
difficult task to do. So I thought to do tutorial on this topic which will help to people who is struggling to use pull
to refresh in their android application.

Demo Video
Android Pull To Refresh Demo
0:19 / 1:10

Note :

At end of this tutorial you can download the example project and you can see the video demonstration of this
tutorial which will help you to follow this tutorial step by step.

Things to Know Before Start


To implement android pull to refresh we need to use an external android library. There are two popular libraries
called “Android-PullToRefresh” and “ActionBar-PullToRefresh”. Both libraries are developed by Chrisbanes. “Android-
PullToRefresh” library is no longer maintained by developer (Library is Expired). So “ActionBar-PullToRefresh” library
is the newest library maintaining by Chrisbanes. This tutorial will use ”ActionBar-PullToRefresh” library.

“ActionBar-PullToRefresh” library will interact with the application actionbar to refresh. This library also compatible
with ”ActionBarSherlock”. In this tutorial I’ll not use “ActionBarSherlock” library behalf I’ll use stock android
actionbar. This library default supports only for android 4.0 (ICS-API level 14) or higher sdk levels. If you need to use
this library below API-Level 14 you need use ActionBarCompact library. Check
“Android Pull To Refresh with ActionBarCompact “ article to learn how to do this.

As you can see in the demo video above “ActionBar-PullToRefresh” library is support different views. Below list will
show you compatible views.

AbsListView derivatives (ListView & GridView).


ScrollView
WebView

In this article I’ll cover ListView,WebView & ScrollView implementation.

Okay, Lets Start…

Step 1 : Download Libraries


Download below libraries and extract it.
 Download from Github

ActionBar-PullToRefresh : (https://github.com/chrisbanes/ActionBar-PullToRefresh)

 Download from Github

SmoothProgressBar : (https://github.com/castorflex/SmoothProgressBar)

Step 2 : Start the Project and Fixing Errors in Libraries


Create a new android application project called “PullToRefreshExample“. It is important to select “API 14 Android
4.0 (ICS)” as application minimum required sdk. I’ll change the activity name to “ListViewActivity“. Now you need to
import both downloaded libraries to your workspace. After you extract both downloaded zip files import both
“library” folders from “ActionBar-PullToRefresh-master” and “SmoothProgressBar-master” folders. If you don’t know
how to import an existing project to your worksapce check this ”How to Import Android Project to Eclipse
(https://www.youtube.com/watch?v=NPUi0BhS4JQ)“ video.

(http://www.tutecentral.com/wp-
content/uploads/2014/01/step2_p
rojectexplore.png)
Errors in ActionBar Pull To Refresh
Library

After you Import both libraries to your workspace ActionBar Pull To Refresh Library will have some errors as you can
see in above image. In order to fix this errors you need to do some updates to both libraries.

Smooth Progress Bar Library Updates


By default this project will not be a library project. So you may not able to add this as reference to pull to refresh
library.Follow below steps to convert this project to a library.
1. Right Click “main” project and goto “Properties”
2. Go to “Android” section.
3. Under library check whether “Is Library” check box is checked or not.
4. If it is not checked. Check the “Is Library” check box.
5. Click “OK” button

Next you need to Drag and Drop the “fr” folder from “java” to “src” folder in “main” project. By default all the class
will be in “java” folder so you need to change it “src” folder.

(http://www.tutecentral.com/wp-content/uploads/2014/01/smoothprogress_errorfix.png)
Drag and Drop the “fr” folder to “src”

ActionBar Pull to Refresh Library Updates


Add the “SmoothProgressBar” library as reference to “ActionBar Pull To Refresh ” Library. Follow below steps to do
it.

1. Right click ”library” project and goto “Properties”


2. Go to “Android” section
3. Unde “Library” click “Add” button
4. From “Project Selection” window select the “main” project
5. Click “OK” button
6. Click “OK” button to close the property window

Next open the “AndroidManifest.xml” file of ActionBar pull to refresh library. Update the manifest file as below
AndroidManifest.xml
1 <?xml version="1.0"-e
ActionBar Pull
ncoding="utf To Refresh
-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android (http://schemas.an
3 package="uk.co.senab.actionbarpulltorefresh.library">
4
5 <!-- set the minimum sdk version to 11 -->
6 <uses-sdk
7 android:minSdkVersion="11"
8 android:targetSdkVersion="18" />
9
10 <application />
11 </manifest>

Now most of the errors should be fixed. But there should error in “uk.co.senab.actionbarpulltorefresh.library =>
DefaultHeaderTransformer.java” class like below which will tell you there is no width(int) method in
“SmoothProgressDrawable” class.

(http://www.tutecentral.com/wp-content/uploads/2014/01/pull_to_refresh_error_fix.png)
Error in width() method

To fix this error you need to simply change the width(strokeWidth) to strokeWidth(strokeWidth). Now all the errors
are fixed.

Step 3 : Use ActionBar Pull To Refresh Library


Now you need to add “ActionBar-PullToRefresh” library as reference your application. Follow below steps to do it.

1. Right click ”PullToRefreshExample” project and goto “Properties”


2. Go to “Android” section
3. Unde “Library” click “Add” button
4. From “Project Selection” window select the “library” project
5. Click “OK” button
6. Click “OK” button to close the property window
Create a class called “BaseActivity“. This is the base activity class used for all other supported views
(Listview,WebView,ScrollView). BaseActivity class should extend Activity class. Add following code to the
BaseActivity class. I have commented the code so you can read and understand the code.

BaseActivity.java
1 package com.tutecentral.pulltorefreshexample;
2
3 import android.app.Activity;
4 import android.app.Fragment;
5 import android.content.Intent;
6 import android.os.Bundle;
7 import android.view.Menu;
8 import android.view.MenuItem;
9 import android.widget.Toast;
10
11 public class BaseActivity extends Activity {
12
13 @Override
14 protected void onCreate(Bundle savedInstanceState) {
15 // TODO Auto-generated method stub
16 super.onCreate(savedInstanceState);
17
18 // Add the Sample Fragment if there is one
19 Fragment sampleFragment = getSampleFragment();
20 if (sampleFragment != null) {
21 getFragmentManager().beginTransaction()
22 .replace(android.R.id.content, sampleFragment).commit();
23 }
24
25 }
26
27 @Override
28 public boolean onCreateOptionsMenu(Menu menu) {
29 // TODO Auto-generated method stub
30
31 getMenuInflater().inflate(R.menu.base_menu, menu);
32 return super.onCreateOptionsMenu(menu);
33 }
34
35 @Override
36 public boolean onOptionsItemSelected(MenuItem item) {
37
38 // This method is for menu. This menu items will appear in all
39 //activities extends this class. I have use this menus to navigate
40 //between activities. You can change this code as you wish
41 //
42
43 switch (item.getItemId()) {
44 case R.id.action_listview:
45 Toast.makeText(this, "Pull to Refresh in ListView", Toast.LENGTH_SHORT).
46 Intent i=new Intent(this,ListViewActivity.class);
47 startActivity(i);
48
49 return true;
50 case R.id.action_scrollview:
51 Toast.makeText(this, "Pull to Refresh in Scroll View", Toast.LENGTH_SHOR
52
53 Intent x=new Intent(this,ScrollViewActivity.class);
54 startActivity(x);
55
56 return true;
57 case R.id.action_webview:
58 Toast.makeText(this, "Pull to Refresh in Web View", Toast.LENGTH_SHORT).
59
60 Intent z=new Intent(this,WebViewActivity.class);
61 startActivity(z);
62
63 return true;
64 }
65
66 return super.onOptionsItemSelected(item);
67 }
68
69 //This method will override by child class. Then base class can get the fragment
70 protected Fragment getSampleFragment() {
71 return null;
72 }
73
74 }

Create an android xml file in “res =>menu” folder called “base_menu.xml“. Copy and paste the below code into the
file. This menu used in BaseActivity to share the single menu with all fragments.

base_menu.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <menu xmlns:android="http://schemas.android.com/apk/res/android (http://schemas.androi
3
4 <!--
5 You can change this as your requrement. I use this menu Item to navigate bettween
6 fragments. So I can show how ListView,WebView & ScrollView works with
7 ActionBar Pull To Refresh Library
8 -->
9
10 <item android:id="@+id/action_listview"
11 android:title="ListView"
12 android:showAsAction="ifRoom|withText" />
13
14 <item android:id="@+id/action_webview"
15 android:title="WebView"
16 android:showAsAction="ifRoom|withText" />
17
18 <item android:id="@+id/action_scrollview"
19 android:title="ScrollVIew"
20 android:showAsAction="ifRoom|withText" />
21
22 </menu>

Now BaseActivity class is completed. You will see errors in this class because I didn’t create “WebViewActivity” &
“ScrollViewActivity” activities. These two activities are used to implement pull to refresh in web view and scroll view.
If you are not using those views you can delete that code snippet from your BaseActivity.java class.

As I mention I will use this pull to refresh library in ListView,WebView and ScrollView. So I will start with ListView,
Pull To Refresh With ListView
Goto “res => layout” open the “activity_list_view.xml” copy and paste the following code to xml file

activity_list_view.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout
3 xmlns:android="http://schemas.android.com/apk/res/android (http://schemas.android.
4 android:id="@+id/ptr_layout"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent">
7
8 <ListView
9 android:id="@+id/ptr_listview"
10 android:layout_height="match_parent"
11 android:layout_width="match_parent" />
12
13 </uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout>

Now open the “ListViewActivity.java” class.This class will extend by BaseActivity. Update your ListViewActivity class
according to below code or copy and paste below code your class.

ListViewActivity.java
1 package com.tutecentral.pulltorefreshexample;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
7 import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout;
8 import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
9 import android.os.AsyncTask;
10 import android.os.Bundle;
11 import android.app.Fragment;
12 import android.app.ListFragment;
13 import android.view.View;
14 import android.view.ViewGroup;
15 import android.widget.ArrayAdapter;
16
17 public class ListViewActivity extends BaseActivity {
18
19 @Override
20 protected Fragment getSampleFragment() {
21 return new SimpleListFragment();
22 }
23
24 public static class SimpleListFragment extends ListFragment implements OnRefres
25 {
26
27 int i=0;
28
29 private PullToRefreshLayout mPullToRefreshLayout;
30
31 ArrayAdapter<String> adapter;
32
33 List<String> list;
34
35 @Override
36 public void onViewCreated(View view, Bundle savedInstanceState) {
37 // TODO Auto-generated method stub
38 super.onViewCreated(view, savedInstanceState);
39
40 list=new ArrayList<String>();
41 int no=1;
42 for(int i=0;i<5;i++)
43 {
44 list.add("Item No :"+no++);
45 }
46
47 super.onViewCreated(view,savedInstanceState);
48 ViewGroup viewGroup = (ViewGroup) view;
49
50 // As we're using a ListFragment we create a PullToRefreshLayout ma
51 mPullToRefreshLayout = new PullToRefreshLayout(viewGroup.getContext
52
53 // We can now setup the PullToRefreshLayout
54 ActionBarPullToRefresh.from(getActivity())
55 // We need to insert the PullToRefreshLayout into the Fragm
56 .insertLayoutInto(viewGroup)
57 // Here we mark just the ListView and it's Empty View as pu
58 .theseChildrenArePullable(android.R.id.list, android.R.id.e
59 .listener(this)
60 .setup(mPullToRefreshLayout);
61
62 }
63
64 @Override
65 public void onActivityCreated(Bundle savedInstanceState) {
66 // TODO Auto-generated method stub
67 super.onActivityCreated(savedInstanceState);
68
69 adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.sim
70
71 // Set the List Adapter to display the sample items
72 setListAdapter(adapter);
73 setListShownNoAnimation(true);
74 }
75
76 @Override
77 public void onRefreshStarted(View view) {
78 // TODO Auto-generated method stub
79
80 //setListShown(false); // This will hide the listview and visible a
81
82 new AsyncTask<Void, Void, Void>() {
83
84 @Override
85 protected Void doInBackground(Void... params) {
86 try {
87 Thread.sleep(5000); // 5 seconds
88 int itemNo=list.size();
89 itemNo++;
90 list.add("New Item No :"+itemNo);
91
92 } catch (InterruptedException e) {
93 e.printStackTrace();
94 }
95 return null;
96 }
97
98 @Override
99 protected void onPostExecute(Void result) {
100 super.onPostExecute(result);
101
102 adapter.notifyDataSetChanged();
103 // Notify PullToRefreshLayout that the refresh has finished
104 mPullToRefreshLayout.setRefreshComplete();
105
106 // if you set the "setListShown(false)" then you have to
107 //uncomment the below code segment
108
109 // if (getView() != null) {
110 // // Show the list again
111 // setListShown(true);
112 // }
113 }
114 }.execute();
115
116 }
117
118 }
119
120 }

Now listview class is over. Currently you are not able to run this program because there are some errors in
BaseActivity.java class to fix. Just comment below lines and run the application to check the result.

BaseActivity.java
1 ...
2 Intent x=new Intent(this,ScrollViewActivity.class); //comment this line
3 startActivity(x);//comment this line
4
5 ...
6 Intent z=new Intent(this,WebViewActivity.class);//comment this line
7 startActivity(z);//comment this line

Pull To Refresh With WebView


Now I’ll show you how to use this actionbar pull to refresh library with a webview. Create a new New Android
Activity called “WebViewActivity“. Follow below steps to create new activity.

1. Right click “src” goto “New” then click “Others…”


2. From “New” window select “Android Activity” under “Android” group and click “Next”
3. Select “Blank Activity” as template and click “Next”
4. Activity Name should be “WebViewActivity” and Layout Name should be “activity_web_view“
5. Then click “Finish” to create the activity

Now goto “res=>layout” open the “activity_web_view.xml” file. This file should include a “PullToRefreshLayout” and
a “WebView“ as following code

activity_web_view.xml
1 <uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout xmlns:android="http://
2 xmlns:ptr="http://schemas.android.com/apk/res-auto (http://schemas.android.com/apk
3 android:id="@+id/ptr_layout"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent" >
6
7 <WebView
8 android:id="@+id/webview"
9 android:layout_width="match_parent"
10 android:layout_height="match_parent"
11 ptr:ptrViewDelegateClass="uk.co.senab.actionbarpulltorefresh.library.viewdeleg
12
13 </uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout>

Now goto the “WebViewActivity.java” class and update the class according to below coding. This class extends
“BaseActivity” and implements “OnRefreshListener”

WebViewActivity.java
1 package com.tutecentral.pulltorefreshexample;
2
3 import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
4 import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout;
5 import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
6 import android.os.Bundle;
7 import android.view.View;
8 import android.webkit.WebView;
9 import android.webkit.WebViewClient;
10
11 public class WebViewActivity extends BaseActivity implements OnRefreshListener {
12
13 private PullToRefreshLayout mPullToRefreshLayout;
14
15 private WebView mWebView;
16
17 @Override
18 protected void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.activity_web_view);
21
22 mWebView = (WebView) findViewById(R.id.webview);
23 mWebView.getSettings().setJavaScriptEnabled(true);
24 mWebView.setWebViewClient(new SampleWebViewClient());
25
26 // Now find the PullToRefreshLayout and set it up
27 mPullToRefreshLayout = (PullToRefreshLayout) findViewById(R.id.ptr
28 ActionBarPullToRefresh.from(this)
29 .allChildrenArePullable()
30 .listener(this)
31 .setup(mPullToRefreshLayout);
32
33 // Finally make the WebView load something...
34 mWebView.loadUrl("http://www.tutecentral.com (http://www.tutecentr
35
36 }
37
38 @Override
39 public void onRefreshStarted(View view) {
40 // TODO Auto-generated method stub
41
42 //////This method will Automatically call when
43 /////pull to refresh event occurs
44
45 mWebView.reload();
46 }
47
48 private class SampleWebViewClient extends WebViewClient {
49
50 @Override
51 public boolean shouldOverrideUrlLoading(WebView view, String url)
52 // Return false so the WebView loads the url
53 return false;
54 }
55
56 @Override
57 public void onPageFinished(WebView view, String url) {
58 super.onPageFinished(view, url);
59
60 // If the PullToRefreshAttacher is refreshing, make it as comp
61 if (mPullToRefreshLayout.isRefreshing()) {
62 mPullToRefreshLayout.setRefreshComplete();
63 }
64 }
65 }
66
67 }

We need to Internet permission to render the webview. Add following permission code to application
“AndroidManifest.xml” file

AndroidManifest.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android (http://schemas.and
3 package="com.tutecentral.pulltorefershexample"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-permission android:name="android.permission.INTERNET" />
8
9 ....

Pull To Refresh With ScrollView


Create a another android activity called “ScrollViewActivity” give Layout name as “activity_scroll_view“. In this
activity I’ll use a Scroll View with Pull to Refresh Layout. Open the ”activity_scroll_view.xml” file in your “layout”
folder. add below xml to your layout.

I have used a “TextView” inside the ScrollView. You can use your own compatible android view with scroll view
behalf of “TextView”

activity_scroll_view
1 <uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout
2 xmlns:android="http://schemas.android.com/apk/res/android (http://schemas.android.
3 android:id="@+id/ptr_layout"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent">
6
7 <ScrollView
8 android:id="@+id/scrollview"
9 android:layout_width="fill_parent"
10 android:layout_height="fill_parent"
11 android:padding="8dp"
12 android:scrollbarStyle="insideInset">
13
14 <!-- Below TextView used to update the screen. You can use any
15 android View with ScrollView. -->
16 <TextView
17 android:layout_width="fill_parent"
18 android:layout_height="wrap_content"
19 android:text="Pull Down to Add More Text"
20 android:id="@+id/scrollTextView"
21 />
22
23 </ScrollView>
24
25 </uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout>

Now you need to update the “ScrollViewActivity.java” class in your “src” folder. ScrollViewActivity extends
“BaseActivity” and implements “OnRefreshListener“. Update your class according to below coding.

ScrollViewActivity.java
1 package com.tutecentral.pulltorefreshexample;
2
3 import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
4 import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout;
5 import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
6 import android.os.AsyncTask;
7 import android.os.Bundle;
8 import android.view.View;
9 import android.widget.TextView;
10
11 public class ScrollViewActivity extends BaseActivity implements OnRefreshListener {
12
13 private PullToRefreshLayout mPullToRefreshLayout;
14 TextView textView;
15
16 @Override
17 protected void onCreate(Bundle savedInstanceState) {
18 super.onCreate(savedInstanceState);
19 setContentView(R.layout.activity_scroll_view);
20
21 textView=(TextView)findViewById(R.id.scrollTextView);
22
23 ///You will setup the action bar with pull to refresh layout
24 mPullToRefreshLayout = (PullToRefreshLayout) findViewById(R.id.ptr_layout)
25 ActionBarPullToRefresh.from(this)
26 .allChildrenArePullable()
27 .listener(this)
28 .setup(mPullToRefreshLayout);
29
30 }
31
32 @Override
33 public void onRefreshStarted(View view) {
34 // TODO Auto-generated method stub
35
36 /**
37 * Below AsyncTask class is used to update the view
38 * Asynchronously
39 */
40 new AsyncTask<Void, Void, Void>() {
41
42 @Override
43 protected Void doInBackground(Void... params) {
44 try {
45 Thread.sleep(5000);
46 //Here you can get the new text from DB or through a web ser
47 //Then YOu can pass it to onPostExecute() method to
48 //Update the view
49
50 } catch (InterruptedException e) {
51 e.printStackTrace();
52 }
53 return null;
54 }
55
56 @Override
57 protected void onPostExecute(Void result) {
58 super.onPostExecute(result);
59
60 //Here you can update the view
61 textView.setText(textView.getText().toString()+"--New Content Ad
62
63 // Notify PullToRefreshLayout that the refresh has finished
64 mPullToRefreshLayout.setRefreshComplete();
65 }
66 }.execute();
67 }
68
69 }

Now we can run this application in emulator or in a real android device to check. Below you can download the
sample codes for this program. See the video demonstration of this tutorial to how to follow this tutorial. I hope
this tutorial was helped you. If there is any problems or suggestions regarding this article please comment below.
Dont forget to Like our Facebook Page (https://www.facebook.com/tutecentral). Subscribe to our website, Google
Plus (https://plus.google.com/+Tutecentral/posts) and Youtube Channel (http://www.youtube.com/tutecentral) for
more tutorials. Thank you for visiting our website.

Video Demonstration
Android Pull To Refresh Tutorial

0:00 / 21:35

Downloads
 Download the complete project

(http://downloads.tutecentral.com/wp-content/uploads/2014/02/PullToRefreshExample.zip)
Google
(http://www.tutecentral.com/android-pull-to-refresh/?share=google-plus-1&nb=1)

Facebook 49
(http://www.tutecentral.com/android-pull-to-refresh/?share=facebook&nb=1)

Twitter 5 More
(http://www.tutecentral.com/android-pull-to-refresh/?share=twitter&nb=1)
(https://plus.google.com/+AhamedIshak)Ahamed Ishak (https://plus.google.com/+AhamedIshak) Follow 0

TAGS ACTION BAR (HTTP://WWW.TUTECENTRAL.COM/TAG/ACTION-BAR/) ANDROID (HTTP://WWW.TUTECENTRAL.COM/TAG/ANDROID-2/)


LIST VIEW (HTTP://WWW.TUTECENTRAL.COM/TAG/LIST-VIEW/) PULL TO REFRESH (HTTP://WWW.TUTECENTRAL.COM/TAG/PULL-TO-REFRESH/)
SCROLL VIEW (HTTP://WWW.TUTECENTRAL.COM/TAG/SCROLL-VIEW/) WEB VIEW (HTTP://WWW.TUTECENTRAL.COM/TAG/WEB-VIEW/)

(HTTPS://TWITTER.COM/INTENT/TWEET?TEXT=ANDROID PULL TO REFRESH&URL=HTTP://WWW.TUTECENTRAL.COM/ANDROID-


PULL-TO-REFRESH/)

(HTTP://WWW.FACEBOOK.COM/SHARER.PHP?U=HTTP%3A%2F%2FWWW.TUTECENTRAL.COM%2FANDROID-PULL-TO-
REFRESH%2F)

(HTTP://PLUS.GOOGLE.COM/SHARE?URL=HTTP://WWW.TUTECENTRAL.COM/ANDROID-PULL-TO-REFRESH/)

(HTTP://PINTEREST.COM/PIN/CREATE/BUTTON/?URL=HTTP://WWW.TUTECENTRAL.COM/ANDROID-PULL-TO-
REFRESH/&MEDIA=HTTP://WWW.TUTECENTRAL.COM/WP-CONTENT/UPLOADS/2014/03/PULL_TO_REFRESH_COVER.PNG)

Tw eet 5

Like 49

19

PREVIOUS ARTICLE
Android Swipe ListView (http://www.tutecentral.com/android-swipe-listview/)

NEXT ARTICLE
Android Custom Navigation Drawer (http://www.tutecentral.com/android-custom-navigation-drawer/)

(http://www.tutecentral.com/author/ishak-livegmail-com/)
Ahamed Ishak (http://www.tutecentral.com/author/ishak-livegmail-
com/)
I'm a self motivated person who love to learn new stuff and share them with others.

(https://plus.google.com/+AhamedIshak) (tutecentral)
SIMILAR ARTICLES

(http://www.tutecentral.com/restful-api-for-android-part-2/)

Restful API for Android using ASP.NET and SQL Server Part 2
(http://www.tutecentral.com/restful-api-for-android-part-2/)
Mar 28, 2014

(http://www.tutecentral.com/restful-api-for-android-part-1/)

Restful API for Android using ASP.NET and SQL Server Part 1
(http://www.tutecentral.com/restful-api-for-android-part-1/)
Mar 12, 2014

(http://www.tutecentral.com/android-custom-navigation-

drawer/)

Android Custom Navigation Drawer (http://www.tutecentral.com/android-custom-


navigation-drawer/)
Feb 14, 2014
(http://www.tutecentral.com/android-swipe-listview/)

Android Swipe ListView (http://www.tutecentral.com/android-swipe-listview/)


Jan 7, 2014

8 Comments TuteCentral Login

Sort by Newest Share Favorite

Join the discussion…

Khin Sandar • 2 months ago


Thank ^-* . May I know , I can change API level min 14 to target 15 ? What should I change other
library setting ?
• Reply • Share ›

Ahamed Ishak Mod Khin Sandar • 2 months ago


Nothing to change in other libraries.. You can simply use those libraries as same as in this
tutorial.
• Reply • Share ›

David Hoxeng • 2 months ago


This is a fantastic article! Would you be close to finishing your article on how to do it with compact?
• Reply • Share ›

Ahamed Ishak Mod David Hoxeng • 2 months ago


Thank you very much.. I'll do a separate tutorial on PullToRefresh with ActionBarCompact.
Subscribe our social media channels so you may not miss any tutorials and videos. :D
• Reply • Share ›

Ramesh Emandi • 3 months ago


First of all, thanks for elaborate tutorial and the video too. The app is very good illustration too.

Sorry to say that the approach is NOT WORKING now.


I think there is a change in SmoothProgressBar library after you have posted this. I see that
SmoothProgressBar library is updated 12 days back i.e approximately 28thJan2014. Your method is
NOT WORKING when downloading the latest SmoothProgressBar.
NOT WORKING when downloading the latest SmoothProgressBar.
When importing the "main" project is also showing errors. Whereas in your video the main project
doesn't have any errors.
For now i am managing by using your packaged code, the complete code. Using the main and library
from that package and using in my project.
Do post if you have solution with latest libraries.
• Reply • Share ›

Ahamed Ishak Mod Ramesh Emandi • 3 months ago


Thank you very much for informing about the issue. I did this tutorial myself using in updated
SmoothProgressBar and PullToRefresh Library. But I didn't get an error in
SmoothProgressBar or PullToRefresh Library. Can you tell me waht is the error you got. Is it a
runtime error. Can you give me some additional details about error so have an idea about the
problem.
• Reply • Share ›

xdarksyndrome • 3 months ago


Hello,

Thank you for the tutorial. But I have a question. How do I implement this using a Fragment? What do
I have to do? Which java classes do I have to modify?

Please respond.
Thank you very much.
• Reply • Share ›

Ahamed Ishak xdarksyndrome • 3 months ago


Okay. Fragments can be used in different situations. Can you explain me where do you going
to use fragments (Ex: tabs, pages in single activity ect..)? If you need to use this in tab you
need to create a class and extend the Fragment and implement the OnRefreshListener
then in OnCreateView() method you have to identify the correct fragment then you can
update the fragment in onRefreshStarted() method similar to other class in this tutorial. You
can find an example in sample application of ActionBar-PullToRefresh Library how to use
this with fragments and tabs. You can refer that code. If you have further problems regarding
this tutorial feel free to ask. Thank you
• Reply • Share ›

ALSO ON TUTECENTRAL WHAT'S THIS?

Restful API for Android using ASP.NET and Android Custom Navigation Drawer
SQL Server Part 1 93 comments • 2 months ago
10 comments • a month ago Ahamed Ishak — you can use Shared
Ahamed Ishak — Thank you.. Share this with Preference to store the value then retrieve from
your friends and colleagues.. Give a support.. fragment.
God Bless You...
Subscribe Add Disqus to your site

Subscribe for Newsletters via Email

Enter your email address to subscribe to this website and receive notifications of new posts by email.

Join 40 other subscribers

Email Address

Subscribe Us

SOCIAL

111 Fans
(https://www.facebook.com/tutecentral)

62 Subscribers
(https://plus.google.com/+Tutecentral)

12 Followers
(http://www.tutecentral.com/feed/)

90 Subscribers
(http://www.youtube.com/user/tutecentral)

Like Us (https://www.facebook.com/tutecentral)
Tute Central
Like

111 people like Tute Central.

Facebook social plugin

TuteCentral.com - A Developer Site

(http://creativecommons.org/licenses/by/4.0/deed.en_US)
TuteCentral.com by TuteCentral (http://www.tutecentral.com) is licensed under a Creative Commons Attribution
4.0 International License (http://creativecommons.org/licenses/by/4.0/deed.en_US).

© Copyright 2014 - TuteCentral.com


Privacy Policy (http://www.tutecentral.com/privacy-policy/)

(https://plus.google.com/+AhamedIshak?rel=author)

You might also like