Sensorki – refresh – #2

Skoro dane już wyświetlają się na ekranie trzeba zrobić coś żeby można było je odświeżyć bez potrzeby ponownego uruchomienia aplikacji. Użyję widżetu SwipeRefreshLayout.

Nie trzeba do tego na szczęście dużego nakładu pracy. Wystarczy opakować RecyclerViewLayout w SwipeRefreshLayout i zmienić id RecyclerViewLayoutu na list, żeby wszystko zadziało się automagicznie.

<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
view raw activity_main.xml hosted with ❤ by GitHub
swipeRefreshLayout

A następnie dodać listener onRefresh w MainActivity, który będzie nasłuchiwał, czy użytkownik przesunął palcem po ekranie. Kiedy użytkownik machnie po ekranie zostanie odpalona metoda sendQueryForData – ta sama co przy uruchomieniu aplikacji. 

swipeRefreshLayout = findViewById(R.id.swiperefresh);
swipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
sendQueryForData();
}
}
);
view raw MainActivity.java hosted with ❤ by GitHub
MainActivity

Metoda sendQueryForData musi dostać dodatkowe linijki, żeby schować ładujące się kółeczko kiedy request zostanie obsłużony:

swipeRefreshLayout.setRefreshing(false);

Dodatkowo musimy pamiętać o ludziach, którzy nie używają gestów do obsługi aplikacji, bo mają na przyklad D-pad. Dla nich trzeba zrobić menu kontekstowe i po kliknięciu na odpowiednią pozycję odświeżyć Pamiętając o wyświetleniu spinnera.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_refresh:
swipeRefreshLayout.setRefreshing(true);
sendQueryForData();
return true;
}
// User didn't trigger a refresh, let the superclass handle this action
return super.onOptionsItemSelected(item);
}
view raw MainActivity.java hosted with ❤ by GitHub
refresh menu

A tak odświeżanie wygląda w działaniu:

refresh w akcji

Kod jak zwykle na githubie -> tu 

Series Navigation<< Sensorki – widok i adapter – #1Sensorki – material design – #3 >>

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

%d bloggers like this: