अंतहीन स्क्रॉल पैटर्न को लागू करने में RecyclerView
को मैं क्योंकि EndlessScrollAdapter
डेटा के दोनों के लिए जिम्मेदार हो सकता है और घटना से निपटने के लिए स्क्रॉल करना चाहिए की तरहक्यों RecyclerView.OnScrollListener एक इंटरफेस नहीं बल्कि एक अमूर्त वर्ग है?
public class EndlessScrollAdapter<VH extends ViewHolder>
extends RecyclerView.Adapter<VH> implements RecyclerView.OnScrollListener {
}
एक वर्ग बनाना चाहते हैं, इस इसे लागू करने के लिए सबसे आसान तरीका है।
लेकिन, क्योंकि recyclerview-v7-21.0.3
में, OnScrollListener
इस
/**
* 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){}
}
की तरह घोषित मैं EndlessScrollAdapter
लागू OnScrollListener
नहीं कर सकता।
इसलिए शीर्षक कहता है, क्या OnScrollListener
के लिए इंटरफ़ेस की बजाय कक्षा होने का कोई अच्छा कारण है? क्योंकि मुझे लगता है कि यह एक इंटरफ़ेस होना चाहिए।
गरीब डिजाइन पसंद के बारे में बात करते हैं बनाने के लिए ... – marmor
कारण पर उल्लेख किया प्रतिबद्धता है "भविष्य में बदलावों को आसान बनाने के लिए मैंने इसे एक इंटरफेस के बजाय एक अमूर्त वर्ग भी बदल दिया।" लेकिन किसी को भविष्य के आधार पर बदलाव नहीं करना चाहिए, क्योंकि इस मामले में, यह वर्ग कभी नहीं बदलेगा और यह निश्चित रूप से इसके बाकी के जीवन के लिए एक इंटरफ़ेस हो सकता है। यह दो साल हो गया है और यह अभी भी वही है। – LeonardoSibela