Android Pull To Refresh View using SwipeRefreshLayout
Activities having SwipeRefreshLayout view should add OnRefreshListener to be notified whenever the swipe to refresh gesture is completed.
SwipeRefreshLayout.OnRefreshListener – Classes that wish to be notified when the swipe gesture correctly triggers a refresh should implement this interface.
Add ListView whose items will be refreshed on swiping. Final /res/layout/activity_main.xml will be as below:
<
android.support.v4.widget.SwipeRefreshLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:id
=
"@+id/swipe_view"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
>
<
ListView
android:id
=
"@+id/listView"
android:layout_width
=
"match_parent"
android:layout_height
=
"424dp"
android:layout_marginTop
=
"10dp"
>
</
ListView
>
</
android.support.v4.widget.SwipeRefreshLayout
>
ListView item layout will be a simple TextView which will display name of the city. Create layout file /res/layout/list_item.xml as below. <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:textColor="@android:color/black" />
MainActivity.class
package
com.androidsrc.swiperefreshlayout;
package
com.androidsrc.swiperefreshlayout;
import
java.util.Arrays;
import
java.util.List;
import
android.app.Activity;
import
android.graphics.Color;
import
android.os.Bundle;
import
android.os.Handler;
import
android.support.v4.widget.SwipeRefreshLayout;
import
android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
import
android.widget.ArrayAdapter;
import
android.widget.ListView;
import
android.widget.Toast;
public
class
MainActivity
extends
Activity
implements
OnRefreshListener {
private
SwipeRefreshLayout swipeView;
private
ListView listView;
private
ArrayAdapter<String> adapter;
private
String[] LIST_ITEM_TEXT_CITIES = {
"Los Angeles"
,
"Chicago"
,
"Indianapolis"
,
"San Francisco"
,
"Oklahoma City"
,
"Washington"
};
private
String[] LIST_ITEM_TEXT_MORE_CITIES = {
"Phoenix"
,
"San Antonio"
,
"San Jose"
,
"Nashville"
,
"Las Vegas"
,
"Virginia Beach"
};
private
List<String> cityList;
// variable to toggle city values on refresh
boolean
refreshToggle =
true
;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
swipeView = (SwipeRefreshLayout) findViewById(R.id.swipe_view);
swipeView.setOnRefreshListener(
this
);
swipeView.setColorSchemeColors(Color.GRAY, Color.GREEN, Color.BLUE,
Color.RED, Color.CYAN);
swipeView.setDistanceToTriggerSync(
20
);
// in dips
swipeView.setSize(SwipeRefreshLayout.DEFAULT);
// LARGE also can be used
cityList = Arrays.asList(LIST_ITEM_TEXT_CITIES);
listView = (ListView) findViewById(R.id.listView);
adapter =
new
ArrayAdapter<String>(getApplicationContext(),
R.layout.list_item, cityList);
listView.setAdapter(adapter);
listView.requestLayout();
}
Handler handler =
new
Handler() {
public
void
handleMessage(android.os.Message msg) {
if
(refreshToggle) {
refreshToggle =
false
;
cityList = Arrays.asList(LIST_ITEM_TEXT_MORE_CITIES);
adapter =
new
ArrayAdapter<String>(getApplicationContext(),
R.layout.list_item, cityList);
}
else
{
refreshToggle =
true
;
cityList = Arrays.asList(LIST_ITEM_TEXT_CITIES);
adapter =
new
ArrayAdapter<String>(getApplicationContext(),
R.layout.list_item, cityList);
}
listView.setAdapter(adapter);
swipeView.postDelayed(
new
Runnable() {
@Override
public
void
run() {
Toast.makeText(getApplicationContext(),
"city list refreshed"
, Toast.LENGTH_SHORT).show();
swipeView.setRefreshing(
false
);
}
},
1000
);
};
};
@Override
public
void
onRefresh() {
swipeView.postDelayed(
new
Runnable() {
@Override
public
void
run() {
swipeView.setRefreshing(
true
);
handler.sendEmptyMessage(
0
);
}
},
1000
);
}
}
Android Pull To Refresh View using SwipeRefreshLayout
Reviewed by Anonymous
on
March 05, 2016
Rating:
No comments: