Android Pull To Refresh View using SwipeRefreshLayout

Android Pull To Refresh View using SwipeRefreshLayout


Android support library android.support.v4 provides support for in-built Android Pull To Refresh View using SwipeRefreshLayout. SwipeRefreshLayout should be used whenever the user can refresh the contents of a view via a vertical swipe gesture.

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;


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 Android Pull To Refresh View using SwipeRefreshLayout Reviewed by Anonymous on March 05, 2016 Rating: 5

No comments:

Java Ternary Operator

Java Ternary Operator Java ternary operator is the only conditional operator that takes three operands. Java ternary operator is a one l...

Powered by Blogger.