2017-10-13 6 views
0

enter image description hereAfficher les éléments de la liste vide avec l'animation de chargement jusqu'à ce que la totalité de la liste est chargée dans Android

Je veux obtenir quelque chose comme ça

enter image description here Et ce

Comment puis-je montrer ce genre de vide liste vide comme dans udemy combiné avec une animation comme dans Snapchat jusqu'à ce que la liste entière est chargée

+0

Il vous suffit d'ajouter une vue avec le motif que vous souhaitez et de masquer la liste, lorsque le chargement est terminé, masquez la vue de l'espace réservé et affichez le ListView – Zoe

+0

https://github.com/sharish/ShimmerRecyclerView – LordRaydenMK

Répondre

0

Maintenant que vous avez expliqué un peu mieux, je suis en train d'éditer cette réponse.

Afin de faire quelque chose de similaire à SkyScanner, afficher des espaces réservés faux parce que vous ne pouvez pas récupérer des informations précédentes sur les données que vous devez suivre les étapes suivantes:

SkyScanner fake placeholders

  • Pour l'animation ont un regard sur la bibliothèque Lottie vous pouvez faire une animation vraiment sympa, et faire tourner cette animation en boucle jusqu'à ce que vous ayez votre réponse d'appel, consultez la bibliothèque ici: https://github.com/airbnb/lottie-android Lottie est une belle façon de faire des vecteurs d'animation et il utilise le fichier json donc c'est vraiment léger, mais vous pouvez aussi faire les animations sur l'ancien style bien sûr. Pour l'espace réservé, la logique est la suivante: Vous allez changer le contenu de votre jeu de données, l'adaptateur va vérifier si le contenu de l'ensemble de données est le type de données réelles que vous voulez afficher va remplir avec le vrai xml et utiliser le vrai détenteur de recyclerview, si le genre de ce n'est pas les données réelles, vous allez gonfler la ligne avec l'espace réservé xml (la même taille et la disposition pour atteindre le résultat que vous recherchez) et un nouveau détenteur de recyclerview pour l'espace réservé afin que vous puissiez contrôler le comportement de la ligne, par exemple contrôler votre animation ou le comportement de l'objet intercale en fonction de la position.

Considérons un objet YourCustomObject en tant que détenteur de vos données réelles, mais peut être tout type aussi longtemps que vous faites un autre type de données pour votre espace réservé faux, la logique à l'intérieur de l'adaptateur est la suivante:

@Override 
public int getItemViewType(int position) { 
    return mDataSet.get(position) instanceof YourCustomObject ? VIEW_TYPE_DATA : VIEW_TYPE_PLACEHOLDER; 
} 

Puis

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    RecyclerView.ViewHolder holder; 
    if (viewType == VIEW_TYPE_DATA) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_real_data, parent, false); 
     holder = new RealDataHolder(v); 
    } else { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_placeholder, parent, false); 
     holder = new PlaceholderHolder(v); 
    } 
    return holder; 
} 

ne pas oublier de vérifier le type de support sur onBindViewHolder

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    if (holder instanceof RealDataHolder) { 
YourCustomObject data = (YourCustomObject) dataSet.get(position); 
(...) 

Ne pas oublier que dans l'adaptateur de votre DataSet est une liste d'objets (classe Java)

J'espère que ça aide.

+0

Il semble que vous ne l'ayez pas fait obtenir ce que je veux, je veux dire placeholder vide devrait être là avant d'obtenir le nombre exact d'éléments de la liste n'a pas d'importance que vous avez 1 ou 50, il devrait afficher 10 espaces réservés vides, puis la liste complète apparaît –

+0

Hmmmm, j'ai pensé Lorsque vous utilisiez l'application de SkyScanner, vous faites comme ceci, un faux espace réservé, utilisez le même code que celui que j'ai fourni et remplacez votre DataSet pour un autre type d'objet.Le code ci-dessus permet de vérifier le type de données dans votre ensemble de données et d'y afficher un espace réservé. Il vous suffit donc de changer le contenu de votre source pour 10 (n) objets différents chaque fois que vous lancez un nouvel appel. Info. De plus, si vous voulez un bel espace réservé je garde ma suggestion d'utiliser Lottie, c'est une bibliothèque fantastique et légère pour réaliser de belles animations. –

+0

Merci l'homme que vous êtes génial –