I want to trigger my SwipeRefreshLayout
in the event onCreateView
of my MainFragment
.
What I want to do is start downloading the information in the event onCreateView
and at the same time I show the SwipeRefreshLayout refreshing. Any ideas?
Here is my code in my Java code in MainFragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
SwipeRefreshLayout swpRfrshLyt= (SwipeRefreshLayout) rootView.findViewById(R.id.swpRfrshLyt);
swpRfrshLyt.setColorSchemeResources(R.color.holo_blue_light,
R.color.holo_green_light,
R.color.holo_orange_light,
R.color.holo_red_light);
swpRfrshLyt.setOnRefreshListener(this);
swpRfrshLyt.setRefreshing(true);
return rootView;
}
Here is my fragment_main.xml
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swpRfrshLyt"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/lstvw_items"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
I am using Android Studio, here is my build gradle
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:+'
compile 'com.android.support:support-v4:+'
compile 'com.mcxiaoke.volley:library:1.0.+'
}
I have installed Android SDK Build Tools 21.0.2
There is a better solution to achieve this by using the following:
mSwipeRefreshLayout.post(new Runnable() {
@Override public void run() {
mSwipeRefreshLayout.setRefreshing(true);
}
});
Here mSwipeRefreshLayout is the SwipeRefreshLayout
. If you simply call:
mSwipeRefreshLayout.setRefreshing(true);
it wont trigger the circle to animate, so by adding the above line you just make a delay in the UI thread so that it shows the circle animation inside the UI thread.
By calling mSwipeRefreshLayout.setRefreshing(true)
the OnRefreshListener will also get executed so after the task end just add mSwipeRefreshLayout.setRefreshing(false)
to stop the circle animation.