2014-11-20 8 views
14

मुझे SwipeRefreshLayout के साथ कोई समस्या है। मेरे पास लेआउट के भीतर एक सूची दृश्य है और जब भी मैं सूची में ऊपर की ओर स्क्रॉल करता हूं, तो देखें कि लेआउट रीफ्रेश करने के लिए स्वाइप को टिगर किया गया है और आप लेआउट के शीर्ष पर वापस स्क्रॉल नहीं कर सकते हैं। क्या किसी के भी पास कोई सुझाव है?एक स्वाइप में ListView में स्क्रॉल नहीं कर सकता RefreshLayout

उत्तर

28

मुझे अपने प्रश्न का उत्तर मिला। मैं मैन्युअल रूप से swipeRefreshLayout को सक्षम कर रहा हूं जब सूचीदृश्य में पहला बच्चा सूची के शीर्ष पर है।

listView.setOnScrollListener(new AbsListView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 

     } 

     @Override 
     public void onScroll(AbsListView listView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
      int topRowVerticalPosition = (listView == null || listView.getChildCount() == 0) ? 
          0 : expandableListview.getChildAt(0).getTop(); 
      refresh.setEnabled((topRowVerticalPosition >= 0)); 
     } 
    }); 
+1

धन्यवाद उभरते एंड्रॉइड डेवलपर, उपरोक्त स्निपेट ने समस्या हल की !!! –

+0

धन्यवाद, मुझे एपीआई 10 के साथ एक ही समस्या है ... यह नए एपिस में नहीं है। लगता है कि एक बग – Mate

+1

वही समाधान है, पोस्ट के अंत में यहां पढ़ने के लिए थोड़ा आसान है: https://yassirh.com/2014/05/how-to-use-swiperefreshlayout-the-right-way/ –

3

https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html

Android docs ऊपर के लिंक पर के अनुसार,

यह लेआउट देखने के माता पिता है कि और इशारा की वजह से रीफ़्रेश होगा केवल समर्थन कर सकते हैं बनाया जाना चाहिए एक प्रत्यक्ष बच्चा

तो ListViewSwipeRefreshLayout के 1 प्रत्यक्ष बच्चा है, ताज़ा ListView के शीर्ष करने के लिए वापस स्क्रॉल पहले ट्रिगर नहीं किया जाएगा। आपको onScroll() में कुछ भी करने की आवश्यकता नहीं है।

+1

टीटी दृश्य में एकमात्र बच्चा है। उपरोक्त समाधान हालांकि मेरे लिए काम किया। – VirtualProdigy

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