web-dev-qa-db-fra.com

Android Lollipop - Tirez pour rafraîchir

J'essaie d'implémenter le pull-to-refresh dans Android. Je sais qu'il y a SwipeRefreshLayout mais avec toutes les applications Google nouvellement conçues comme Drive (voir ci-joint) pour Lollipop, j'ai remarqué qu'une nouvelle icône de rafraîchissement apparaît dans la vue lorsqu'elle est tirée. J'ai essayé de le chercher en ligne mais en vain. Android l'a-t-il publié dans le cadre de la conception matérielle? Des idées sur la façon de le mettre en œuvre?

EDIT: Certaines personnes ont souligné qu'il s'agit d'un doublon de Comment implémenter un Pull-to-refresh . Ce n'est pas la même question. Vous le verrez si vous lisez correctement la question.

enter image description here

26
gsb

C'est SwipeRefreshLayout. La version 21 de la bibliothèque de support inclut le remplacement de l'ancien style.

60
Ben Pye
  1. Téléchargez la dernière bibliothèque de support Lollipop SDK et Extras/Android
  2. Définissez la cible de construction du projet sur Android 5.0 (sinon le package de support peut avoir des erreurs avec les ressources)
  3. Mettez à jour vos bibliothèques/Android-support-v4.jar vers la 21e version
  4. Utilisez Android.support.v4.widget.SwipeRefreshLayout plus Android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener

Un guide détaillé peut être trouvé ici: http://antonioleiva.com/swiperefreshlayout/

De plus pour ListView, je recommande de lire sur canChildScrollUp () dans les commentaires;)

19
goRGon

J'aime ce guide le meilleur et son vraiment facile à comprendre: https://www.bignerdranch.com/blog/implementing-swipe-to-refresh/

  1. Ajoutez ce qui suit à gradle:

    compile 'com.Android.support:support-v4:22.2.0'

  2. Ajoutez le balayage pour actualiser votre mise en page - mettez en vue de liste ou en vue de recyclage au milieu du swiperefreshlayout:

        <ListView
            Android:id="@+id/activity_main_listview"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            >
        </ListView>
    
    </Android.support.v4.widget.SwipeRefreshLayout>
    
  3. Ajoutez votre code pour l'activité principale:

    public class MainActivity extends Activity {
    
    ListView mListView;
    SwipeRefreshLayout mSwipeRefreshLayout;
    Adapter mAdapter;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.acivity_main);
      SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.activity_main_swipe_refresh_layout);
      mListView = findViewById(R.id.activity_main_list_view);
      mListView.setAdapter(new ArrayAdapter<String>(){
      String[] fakeTweets = getResources().getStringArray(R.array.fake_tweets);
      mAdapter = new ArrayAdapter<String>(this, Android.R.layout.simple_list_item_1, fakeTweets)
      listView.setAdapter(mAdapter);
    });
    }
    

    }

  4. N'oubliez pas d'appeler mSwipeRefreshLayout.setRefreshing (false); une fois votre rafraîchissement terminé.

7
Simon

salut Si vous ne souhaitez pas développer un tel type de mise en page, veuillez suivre cette URL, je l'ai utilisé, c'est génial.

https://github.com/stormzhang/SwipeRefreshLayoutDemo

4
Rajan Bhavsar
3
Jeff Mixon