16626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira/* 26626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * Copyright (C) 2013 The Android Open Source Project 36626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * 46626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * Licensed under the Apache License, Version 2.0 (the "License"); 56626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * you may not use this file except in compliance with the License. 66626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * You may obtain a copy of the License at 76626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * 86626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 96626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * 106626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * Unless required by applicable law or agreed to in writing, software 116626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 126626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * See the License for the specific language governing permissions and 146626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * limitations under the License. 156626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira */ 166626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira 176626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereirapackage com.example.android.supportv4.widget; 186626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira 1994349e753cba952f613abb992b0d8c2623bf485eChris Banesimport com.example.android.supportv4.R; 2094349e753cba952f613abb992b0d8c2623bf485eChris Banes 216626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.app.Activity; 226626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.os.Bundle; 236626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.os.Handler; 2494349e753cba952f613abb992b0d8c2623bf485eChris Banesimport android.support.annotation.LayoutRes; 256626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.support.v4.widget.SwipeRefreshLayout; 2694349e753cba952f613abb992b0d8c2623bf485eChris Banesimport android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener; 276626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.view.Menu; 286626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.view.MenuInflater; 296626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.view.MenuItem; 306626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.view.View; 316626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.widget.ArrayAdapter; 326626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereiraimport android.widget.ListView; 336626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira 346626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira/** 356626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * Example of using the SwipeRefreshLayout. 366626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira */ 3794349e753cba952f613abb992b0d8c2623bf485eChris Banesabstract class BaseSwipeRefreshLayoutActivity extends Activity implements OnRefreshListener { 3894349e753cba952f613abb992b0d8c2623bf485eChris Banes 3994349e753cba952f613abb992b0d8c2623bf485eChris Banes public static final String[] TITLES = { 406626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry IV (1)", 416626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry V", 426626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry VIII", 436626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Richard II", 446626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Richard III", 456626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Merchant of Venice", 466626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Othello", 476626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "King Lear", 486626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry IV (1)", 496626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry V", 506626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry VIII", 516626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Richard II", 526626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Richard III", 536626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Merchant of Venice", 546626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Othello", 556626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "King Lear", 566626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry IV (1)", 576626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry V", 586626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry VIII", 596626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Richard II", 606626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Richard III", 616626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Merchant of Venice", 626626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Othello", 636626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "King Lear", 646626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry IV (1)", 656626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry V", 666626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Henry VIII", 676626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Richard II", 686626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Richard III", 696626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Merchant of Venice", 706626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "Othello", 716626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira "King Lear" 726626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira }; 7394349e753cba952f613abb992b0d8c2623bf485eChris Banes 746626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira // Try a SUPER quick refresh to make sure we don't get extra refreshes 756626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira // while the user's finger is still down. 766626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira private static final boolean SUPER_QUICK_REFRESH = false; 7794349e753cba952f613abb992b0d8c2623bf485eChris Banes 786626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira private SwipeRefreshLayout mSwipeRefreshWidget; 796626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira 8094349e753cba952f613abb992b0d8c2623bf485eChris Banes private final Handler mHandler = new Handler(); 8194349e753cba952f613abb992b0d8c2623bf485eChris Banes 8294349e753cba952f613abb992b0d8c2623bf485eChris Banes private final Runnable mRefreshDone = new Runnable() { 836626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira @Override 846626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira public void run() { 856626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira mSwipeRefreshWidget.setRefreshing(false); 866626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira } 876626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira 886626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira }; 8994349e753cba952f613abb992b0d8c2623bf485eChris Banes 906626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira @Override 916626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira public void onCreate(Bundle bundle) { 926626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira super.onCreate(bundle); 9394349e753cba952f613abb992b0d8c2623bf485eChris Banes setContentView(getLayoutId()); 9494349e753cba952f613abb992b0d8c2623bf485eChris Banes 956626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira mSwipeRefreshWidget = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_widget); 9694349e753cba952f613abb992b0d8c2623bf485eChris Banes mSwipeRefreshWidget.setColorSchemeResources(R.color.color1, R.color.color2, R.color.color3, 976626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira R.color.color4); 986626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira mSwipeRefreshWidget.setOnRefreshListener(this); 996626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira } 1006626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira 10194349e753cba952f613abb992b0d8c2623bf485eChris Banes @LayoutRes 10294349e753cba952f613abb992b0d8c2623bf485eChris Banes protected abstract int getLayoutId(); 10394349e753cba952f613abb992b0d8c2623bf485eChris Banes 1046626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira @Override 1056626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira public void onRefresh() { 1066626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira refresh(); 1076626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira } 1086626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira 1096626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira @Override 1106626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira public boolean onCreateOptionsMenu(Menu menu) { 1116626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira MenuInflater inflater = getMenuInflater(); 1126626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira inflater.inflate(R.menu.swipe_refresh_menu, menu); 1136626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira return true; 1146626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira } 1156626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira 1166626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira /** 1176626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira * Click handler for the menu item to force a refresh. 1186626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira */ 1196626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira @Override 1206626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira public boolean onOptionsItemSelected(MenuItem item) { 1216626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira final int id = item.getItemId(); 1226626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira switch(id) { 1236626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira case R.id.force_refresh: 1246626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira mSwipeRefreshWidget.setRefreshing(true); 1256626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira refresh(); 1266626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira return true; 1276626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira } 1286626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira return false; 1296626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira } 1306626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira 1316626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira private void refresh() { 1326626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira mHandler.removeCallbacks(mRefreshDone); 1336626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira mHandler.postDelayed(mRefreshDone, 1000); 1346626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira } 1356626fee1866b79558ef509d7c4c6f76afcdb7290Mindy Pereira}