2013-06-24 9 views
8

क्या किसी के पास सूची Pinned section header के साथ उपयोग करने का अभ्यास है? मैं अपनी सूची के साथ Android-PullToRefresh lib का उपयोग करता हूं और मैं सूची के शीर्ष पर पिन किए गए अनुभाग शीर्षलेख को दिखाने की क्षमता जोड़ना चाहता हूं। मैंने पिन किए गए अनुभाग के लिए किसी अन्य प्रोजेक्ट में PinnedHeaderListView lib का उपयोग किया। लेकिन मैं इन दो पुस्तकालयों को एक में जोड़ नहीं सकता।पिन किए गए सेक्शन हेडर के साथ PullToRefresh सूची

क्या Android-PullToRefresh पिन किए गए सेक्शन हेडर दिखा सकता है? शायद कोई अन्य Pull to refresh lib इसे कर सकता है?

+1

मेरी राय में आपको [एक्शनबार-पुलट्रोफ्रेश] (https://github.com/chrisbanes/ActionBar-PullToRefresh) का उपयोग करना चाहिए क्योंकि Android-PullToRefresh को 5 महीने तक समर्थित नहीं किया गया है। – mmBs

+0

ग्रेट टिप्पणी, मुझे lib पर ध्यान देना है। लेकिन मुझे यकीन नहीं है कि यह पिन किए गए हेडर का समर्थन करता है। – dimetil

+0

मैं वही काम करने की कोशिश कर रहा हूं। अब तक मेरा एकमात्र निष्कर्ष यह है कि मुझे पुस्तकालयों में से किसी एक के ऊपर व्यवहार में से एक को लागू करना है .. क्योंकि विलय या दोनों का उपयोग काम नहीं करेगा। – neteinstein

उत्तर

4

मैं कुछ शोध किया और मैं 2 विकल्प पाया:

  1. StickyListHeaders। इस पुस्तकालय का योगदान जेक व्हार्टन (reference) द्वारा किया जाता है, इसलिए यह वादा करता है और अन्य पुस्तकालयों के साथ संगत हो सकता है। आपको इसका इस्तेमाल करने की कोशिश करनी चाहिए।
  2. PinnedSectionListView - Android के लिए पिन किए गए अनुभागों के साथ ListView का उपयोग करना आसान है।

आप इन दो पुस्तकालयों को एक्शनबार-पुलट्रोफ्रेश के साथ संयोजित करने का प्रयास कर सकते हैं। मैं तुम्हें समाधान लागू कर सकते हैं लगता है;)

+2

स्टिकीलिस्ट हेडर्स के साथ यह संभव नहीं है। स्टिकीलिस्ट हेडर फ़्रेमलेआउट से "ListView" लागू करता है जो समर्थित नहीं है। – neteinstein

+0

बस अंदरूनी सूचीदृश्य का उपयोग करें। – virsir

9

यह StickyListHeaders पुस्तकालय के साथ Actionbar-PullToRefresh पुस्तकालय एकीकृत करने के लिए संभव है, लेकिन आप आदेश Actionbar-PullToRefresh सही ढंग से काम करने के लिए प्राप्त करने के लिए एक कस्टम प्रतिनिधि उपयोग करने की आवश्यकता:

public class StickyListViewDelegate extends AbsListViewDelegate { 
    @Override public boolean isReadyForPull(View view, final float x, final float y) { 
    StickyListHeadersListView sticky = (StickyListHeadersListView) view; 
    return super.isReadyForPull(sticky.getWrappedList(), x, y); 
} 

एकीकृत इतना की तरह:

StickyListViewDelegate delegate = new StickyListViewDelegate(); 
ActionBarPullToRefresh.from(getActivity()).theseChildrenArePullable(mListView) 
    .useViewDelegate(StickyListHeadersListView.class, delegate) 
    .listener(this).setup(mPullToRefreshLayout); 

कारण यह है कि दो पुस्तकालयों एक साथ काम नहीं करते है, क्योंकि StickyListHeadersListView वर्ग वास्तव में ListView (जो क्या Actionbar-PullToRefresh पुस्तकालय विस्तार नहीं करता है डिफॉल्ट रूप से एक प्रतिनिधि को असाइन करते समय देखता है)।

+0

धन्यवाद, आपने अभी मेरी सैनिटी बचाई है :)! – Nick

+0

मैंने आपके समाधान की कोशिश की, लेकिन फिर भी यह मेरे लिए काम नहीं कर रहा है। कोई अन्य मदद आप प्रदान कर सकते हैं? – AndyN

+1

+1 यह मेरे लिए काम करता है! –

0

स्वाइप रीफ्रेश लयआउट + आप जिस भी अन्य उपयुक्त लाइब्रेरी का उपयोग करेंगे, वह नौकरी कर सकता है। मैं PinnedSectionListView beacuse को पसंद करता हूं, यह सूचीदृश्य का उपयोग करता है और इसमें यूआई/यूएक्स के मामले में इसका पेशेवर है।

2

आप समर्थन-पुस्तकालय के SwipeRefreshLayout और PinnedHeaderListview के संयोजन का उपयोग कर सकते हैं।

अपने एक्सएमएल फ़ाइल में निम्न प्रकार उपयोग करें:

<android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/pinned_lisview_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <za.co.immedia.pinnedheaderlistview.PinnedHeaderListView 
      android:id="@+id/event_items_lisview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 
     </za.co.immedia.pinnedheaderlistview.PinnedHeaderListView> 
    </android.support.v4.widget.SwipeRefreshLayout> 

और फिर जावा कोड में, बस हमेशा की तरह अपने PinnedHeaderListView के लिए कोड लिखें। आखिरकार बस अपने स्वाइप रीफ्रेश लयआउट के लिए रीफ्रेश श्रोता को नीचे रखें:

pinned_lisview_container 
        .setOnRefreshListener(new OnRefreshListener() { 

         @Override 
         public void onRefresh() { 
         // do your refresh tasks here 
         } 
        }); 

आप कर चुके हैं।

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