2014-07-21 22 views
9

हैलो सब मैंने अभी नए एंड्रॉइड एल विजेट रीसाइक्लर व्यू के साथ काम करने के लिए एक डेमो बनाया है। मैंने स्वाइप रिफ्रेश लयआउट का उपयोग करके पुल-टू-रीफ्रेश भी लागू किया है लेकिन अब मेरे लिए समस्या यह है कि मैं चिपचिपा कैसे कार्यान्वित कर सकता हूं यहाँ शीर्ष लेख, क्योंकि जब मैंएंड्रॉइड चिपचिपा हेडर रीसाइक्लर व्यू/सेक्शन हेडर रीसाइक्लर व्यू

mRecyclerView.setOnScrollListener(new OnScrollListener() { 

    @Override 
    public void onScrolled(int arg0, int arg1) { 

    } 

    @Override 
    public void onScrollStateChanged(int arg0) { 
     // TODO Auto-generated method stub 

    } 
}); 

स्थापित करने के लिए मैं केवल इन 2 तरीकों तो न किसी भी विचार मैं यह कैसे प्रबंधित कर सके पाने की कोशिश ...

कृपया मदद ..

+0

कृपया बताएं कि आप किस प्रकार के चिपचिपा-हेडर की तलाश में हैं? बस एक हेडर? श्रेणी स्टाइल हेडर की कोई भी संख्या जो आपके द्वारा स्क्रॉल करते समय अंतिम स्थिति लेती है? – Simon

+1

कृपया Instagram देखें .. Instagram की तरह मैं चिपचिपा शीर्षलेख ढूंढ रहा हूं या आप अनुभाग शीर्षलेख कह सकते हैं जहां प्रत्येक पंक्ति में वह शीर्षलेख होगा जो इसकी सामग्री तक स्क्रॉल होने तक शीर्ष पर चिपक जाता है! – Pramod

उत्तर

5

के बाद से पिछले जवाब एक विश्वसनीय समाधान नहीं होता है, मैं RecyclerView के लिए मेरे FlexibleAdapter पुस्तकालय, कि एक बार में सभी निम्नलिखित कार्यक्षमताओं को संभालने में सक्षम है का प्रस्ताव: धारा के साथ हेडर के लिए

  • स्टिकी कार्यक्षमता, के साथ काम करता सभी 3 लेआउट प्रबंधक और ViewPager के साथ भी।
  • चयन मोड।
  • ऑटो-मैपिंग के साथ एकाधिक आइटम प्रकार।
  • पूर्वनिर्धारित व्यूहोल्डर।
  • चयन समन्वय के साथ विस्तारणीय आइटम।
  • खींचने योग्य और स्वाइप-टू-डिसमिस।
  • एनिमेटेड असिंक फ़िल्टर स्पैन करने योग्य टेक्स्ट के साथ।
  • स्क्रॉलिंग एनिमेशन।
  • एडाप्टर बाध्यकारी के साथ अंतहीन स्क्रॉल।
  • UndoHelper & एक्शनमोड हेल्पर।
  • फास्टस्क्रॉलर।
  • ... और अधिक।

विचार के पीछे के बजाय विभिन्न पुस्तकालयों है कि केवल 1 या 3 उनमें से और है कि आप का समर्थन पर भरोसा करने की हर परियोजना के लिए फिर से एक कस्टम एडाप्टर से अधिक खरोंच से बनाने के लिए से बचने के लिए और एक पुस्तकालय में अधिक कार्यक्षमताओं है, है विलय नहीं कर सकता

+4

देख सकते हैं क्या आप इस पोस्ट की समीक्षा कर सकते हैं: [व्यक्तिगत ओपन-सोर्स लाइब्रेरीज़ कैसे प्रदान करें?] (Https://meta.stackexchange.com/q/229085)? प्रतीत होता है कि आप संदर्भ के जवाब को सिलाई किए बिना विभिन्न स्थानों पर अपनी लाइब्रेरी के बारे में पोस्ट कर रहे हैं। –

+0

ठीक है मैंने इसे पढ़ा है। मैं हमेशा संदर्भ पर रहने की कोशिश करता हूं, लेकिन वास्तव में, पिछली टिप्पणियों ने कहा कि प्रस्तावित समाधान काम नहीं करता है। इसलिए, यही कारण है कि मैंने अपनी पुस्तकालय का प्रस्ताव दिया। – Davidea

5

public void onScrolled(int dx, int dy)

उन दो तर्क है कि आप onScrolled प्राप्त कर रहे हैं कर रहे हैं, इसका मतलब है कि, पिक्सेल की संख्या को RecyclerView एक्स और वाई अक्ष पर बदल ... इसलिए शायद सब आप क्या करना चाहते है:

@Override 
public void onScrolled(int dx, int dy) { 
    if(dx < 0) // going up 
     showSitckyHeader(); 
} 

आप शायद न्यूनतम स्क्रॉल राशि जोड़कर इस कार्यान्वयन को और बेहतर बना सकते हैं। की तरह कुछ:

int totalScrolled = 0; 
@Override 
public void onScrolled(int dx, int dy) { 
    totalScrolled += dx; 
    if(totalScrolled < MIN_SCROLL) 
     showSitckyHeader(); 
    if(dx > 0) 
     totalScrolled = 0; 
} 

@Override 
public void onScrollStateChanged(int newState) { 
    if(newState == SCROLL_STATE_IDLE || newState = SCROLL_STATE_SETTLING) 
     totalScrolled = 0; 
} 

या यहाँ तक कि आगे जाकर गति को लागू, समय की गिनती है, लेकिन कार्यान्वयन के उन प्रकार के और अधिक मुश्किल कर रहे हैं, और आप इसे अपने आप को परीक्षण करने के लिए है।

+0

दिशा के लिए धन्यवाद।मैं आपके दृष्टिकोण के साथ प्रयास करूंगा लेकिन चिंताएं तब होती हैं जब रीसायकलव्यू स्क्रॉल हो रहा है मुझे यह पता लगाना है कि कौन सी वस्तु शीर्ष पर है और फिर मुझे उस आइटम में हेडर व्यू ढूंढना होगा और उस पर मार्जिन सेट करना होगा या कोई बेहतर तरीका है? – Pramod

+0

जो मैं "चिपचिपा शीर्षलेख" से समझता हूं वह यह है कि जब भी उपयोगकर्ता स्क्रॉल करता है तो हेडर किसी भी समय दिखाया जा सकता है। इसका मतलब है कि वास्तविक हेडर रीसाइक्लर व्यू व्यू का हिस्सा नहीं है, लेकिन यह हेडर और रीसाइक्लिंग व्यू के साथ फ़्रेमलाउट में है। RecyclerView पर पहला दृश्य हेडर के समान आकार के साथ एक खाली दृश्य होगा। और जब भी सूची ऊपर और नीचे जाती है तो आप हेडर को ऊपर और नीचे ले जाते हैं। इसके लिए एक उपयोगी विधि https://developer.android.com/reference/android/view/View.html#offsetTopAndBottom(int) उस प्रभाव के लिए मार्जिन का उपयोग न करें। – Budius

+0

नहीं .. आप मुझे गलत कर रहे हैं .. मुझे इंस्टाग्राम की तरह चिपचिपा हेडर चाहिए जहां प्रत्येक पंक्ति में शीर्ष पर चिपक जाती है जब तक कि आइटम स्क्रॉल नहीं हो जाता है ... – Pramod

संबंधित मुद्दे