Pourquoi RecyclerView.OnScrollListener n'est pas une interface mais une classe abstraite?
À mettre en œuvre sans fin motif à la RecyclerView
je veux créer une classe comme
public class EndlessScrollAdapter<VH extends ViewHolder>
extends RecyclerView.Adapter<VH> implements RecyclerView.OnScrollListener {
}
Parce que EndlessScrollAdapter
devrait être responsable à la fois des données de défilement et de la gestion des événements, c'est la façon la plus pratique à mettre en œuvre.
Mais, parce que dans recyclerview-v7-21.0.3
OnScrollListener
déclarée comme telle
/**
* An OnScrollListener can be set on a RecyclerView to receive messages
* when a scrolling event has occurred on that RecyclerView.
*
* @see RecyclerView#setOnScrollListener(OnScrollListener)
*/
abstract static public class OnScrollListener {
/**
* Callback method to be invoked when RecyclerView's scroll state changes.
*
* @param recyclerView The RecyclerView whose scroll state has changed.
* @param newState The updated scroll state. One of {@link #SCROLL_STATE_IDLE},
* {@link #SCROLL_STATE_DRAGGING} or {@link #SCROLL_STATE_SETTLING}.
*/
public void onScrollStateChanged(RecyclerView recyclerView, int newState){}
/**
* Callback method to be invoked when the RecyclerView has been scrolled. This will be
* called after the scroll has completed.
*
* @param recyclerView The RecyclerView which scrolled.
* @param dx The amount of horizontal scroll.
* @param dy The amount of vertical scroll.
*/
public void onScrolled(RecyclerView recyclerView, int dx, int dy){}
}
Je ne peux pas faire EndlessScrollAdapter
mettre en œuvre OnScrollListener
.
Donc, comme le dit le titre, est-il une bonne raison pour OnScrollListener
à une classe plutôt qu'une interface? Parce que je pense qu'il devrait être d'une interface.
source d'informationauteur Onur
Vous devez vous connecter pour publier un commentaire.
J'ai eu la même question, et c'est certainement comme prévu, comme réponse à ce rapport de bug:
https://code.google.com/p/android/issues/detail?id=79283
Aussi les diff qui introduit il peut être trouvé ici:
https://android.googlesource.com/platform/frameworks/support/+/cef7b49%5E!/
Pas sûr que je suis d'accord avec la modification, personnellement, mais il ya go.
C'est vrai, mais on peut avoir une classe dédiée qui
extends RecyclerView.OnScrollListener
( un exemple concret deRecyclerView.OnScrollListener
). E. get ce que vous avez besoin est juste
l'idée d'éviter de définir le port d'écoute de votre metdod
et de créer un intérieur classe écouteur