Intereting Posts
एंड्रॉइड: प्रदर्शित नहीं ImageView के साथ UIL और TouchImageView एंड्रॉइड सेवा कभी भी शुरू नहीं हुई – onStartCommand () कहा नहीं बटन onClick त्रुटि … एक विधि नहीं मिल सका एंड्रॉइड: खोज योग्य गतिविधि के बिना हाल ही के खोज सुझाव उपलब्ध करा रहे हैं? एंड्रॉइड एमवीवीएम डिजाइन पैटर्न उदाहरण एंड्रॉइड पार्स JSONObject मैं TextView में विशेष वर्ण (जैसे & ndash;) कैसे दिखा सकता हूं? एक्लिप्स में मैं git submodule subprojects का प्रबंधन कैसे करूं? एंड्रॉइड टेस्ट वाले एंड्रॉइड ऐप में निर्भरता विवाद त्रुटि एंड्रॉइड के लिए Google के साथ साइन-इन रिलीज एपीके में काम नहीं कर रहा है मैं अपने सर्वर पर एंड्रॉइड इन-ऐप-बिलिंग लेन-देन कैसे सत्यापित करूं? फोनगैप एचटीएमएल 5 / एंड्रॉइड ऐप – आइफ्रेम ऊंचाई मुद्दा एंड्रॉइड: अधिसूचना के लिए कोई आइकन नहीं कैसे एंड्रॉइड EditText में पेस्ट विकल्प निष्क्रिय करने के लिए एंड्रॉइड फोनगैप 1.8.0 एप के लिए कुकीज़ कैसे सक्षम करें?

यह कैसे जाँचें कि मेरी सूची-दृश्य में मदों की स्क्रॉल संख्या क्या है?

आप कैसे जानते हैं कि यदि आपकी सूची दृश्य में पर्याप्त संख्या में आइटम हैं, तो यह स्क्रॉल कर सकता है?

उदाहरण के लिए, अगर मेरे पास मेरी सूची में 5 आइटम हैं तो यह सब एक स्क्रीन पर प्रदर्शित किया जाएगा। लेकिन अगर मेरे पास 7 या अधिक है, तो मेरी सूचीदृश्य स्क्रॉल करने के लिए शुरू होता है। मुझे कैसे पता चलेगा कि मेरी सूची प्रोग्राम की दृष्टि से स्क्रॉल कर सकती है?

Solutions Collecting From Web of "यह कैसे जाँचें कि मेरी सूची-दृश्य में मदों की स्क्रॉल संख्या क्या है?"

डायगोसैन का जवाब भिन्न नहीं हो सकता जब स्क्रीन पर अंतिम आइटम आंशिक रूप से दिखाई दे। यहाँ उस समस्या का हल है

सबसे पहले, सूची वीज़ को स्क्रीन पर गाया जाना चाहिए, इससे पहले कि हम जांच सकें कि उसकी सामग्री स्क्रॉल है या नहीं। यह एक व्यॉटट्रीऑब्सर्वर के साथ किया जा सकता है:

 ViewTreeObserver observer = listView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (willMyListScroll()) { // Do something } } }); 

और यहां है willMyListScroll() :

 boolean willMyListScroll() { int pos = listView.getLastVisiblePosition(); if (listView.getChildAt(pos).getBottom() > listView.getHeight()) { return true; } else { return false; } } 

माइक ऑर्टिज़ के उत्तर पर मेरी टिप्पणी के अनुसार, मेरा मानना ​​है कि उसका जवाब गलत है:

getChildAt () केवल उन बच्चों की गणना करता है जो स्क्रीन पर दिखाई दे रहे हैं। इस बीच, getLastVisiblePosition एडेप्टर पर आधारित सूचकांक देता है। इसलिए अगर अंतिम विज़ुअल स्थिति 8 है क्योंकि यह सूची में 9वीं आइटम है और स्क्रीन पर केवल 4 दृश्यमान आइटम हैं, तो आपको दुर्घटना हो जाएगी। GetChildCount () को कॉल करके सत्यापित करें और देखें। GetChildAt के सूचकांक डेटा सेट के लिए सूचकांक के समान नहीं हैं। इसे बाहर की जाँच करें: सूची दृश्य देखेंसंपादित करें दिखाई देने वाले बच्चों के लिए रिक्त स्थान लौट रहा है

यहां मेरा समाधान है:

 public boolean isScrollable() { int last = listView.getChildCount()-1; //last visible listitem view if (listView.getChildAt(last).getBottom()>listView.getHeight() || listView.getChildAt(0).getTop()<0) { //either the first visible list item is cutoff or the last is cutoff return true; } else{ if (listView.getChildCount()==listView.getCount()) { //all visible listitem views are all the items there are (nowhere to scroll) return false; } else{ //no listitem views are cut off but there are other listitem views to scroll to return true; } } } 

एंड्रॉइड को स्क्रीन से सूची listView साथ प्रस्तुत करने से पहले आप इसका पता नहीं लगा सकते हैं। हालांकि, आप इस पोस्ट-रेंडर को पूरी तरह से पहचान सकते हैं।

 boolean willMyListScroll() { if(listView.getLastVisiblePosition() + 1 == listView.getCount()) { return false; } return true; } 

यह क्या जांच करता है कि सूची दृश्य दृश्य विंडो में आपकी सभी सूची दृश्य आइटम शामिल हैं अगर ऐसा हो सकता है, तो सूची listView कभी स्क्रॉल नहीं होगा और प्राप्त करने getLastVisiblePosition() हमेशा सूची की डेटा एडेप्टर में मौजूद वस्तुओं की कुल संख्या के बराबर होगा।

यह सूची I listview की अंतिम पंक्ति के बाद चित्र दिखाने के लिए लिखा है:

 public class ShowTheEndListview { private ImageView the_end_view; private TabbedFragRootLayout main_layout; private ListView listView; private float pas; private float the_end_img_height; private int has_scroll = -1; public ShowTheEndListview(float height) { the_end_img_height = height; pas = 100 / the_end_img_height; } public void setData(ImageView the_end_view, TabbedFragRootLayout main_layout, ListView listView) { this.the_end_view = the_end_view; this.main_layout = main_layout; this.listView = listView; } public void onScroll(int totalItemCount) { if(totalItemCount - 1 == listView.getLastVisiblePosition()) { int pos = totalItemCount - listView.getFirstVisiblePosition() - 1; View last_item = listView.getChildAt(pos); if (last_item != null) { if(listHasScroll(last_item)) { // Log.e(TAG, "listHasScroll TRUE"); } else { // Log.e(TAG, "listHasScroll FALSE"); } } } } private boolean listHasScroll(View last_item) { if(-1 == has_scroll) { has_scroll = last_item.getBottom() > (main_layout.getBottom() - the_end_img_height - 5) ? 1 : 0; } return has_scroll == 1; } public void resetHasScroll() { has_scroll = -1; } } 

AbsListView में यह शामिल है:

 /** * Check if the items in the list can be scrolled in a certain direction. * * @param direction Negative to check scrolling up, positive to check scrolling down. * @return true if the list can be scrolled in the specified direction, false otherwise. * @see #scrollListBy(int) */ public boolean canScrollList(int direction); 

आपको लेआउट बच्चों को ओवरराइड करना होगा () और इसके भीतर इसका उपयोग करना होगा:

 @Override protected void layoutChildren() { super.layoutChildren(); isAtBottom = !canScrollList(1); isAtTop = !canScrollList(-1); } 

इस तरह मैं जांचना चाहता था

 if (listView.getAdapter() != null && listView.getLastVisiblePosition() == listView.getAdapter().getCount() - 1 && listView.getChildAt(listView.getChildCount() - 1).getBottom() == listView.getBottom()) 

अगर यह सच बताता है, तो सूची नीचे है

SetOnScrollListener का उपयोग करें, OnScrollListener को कॉलबैक लागू करके, आप यह निर्धारित कर सकते हैं कि स्क्रॉलिंग पूर्व-परिभाषित स्थिरांक का उपयोग करके हो रही है और तदनुसार स्थिति को संभालना है।

  boolean listBiggerThanWindow = appHeight - 50 <= mListView.getHeight(); Toast.makeText(HomeActivity.this, "list view bigger that window? " + listBiggerThanWindow, Toast.LENGTH_LONG) .show(); if (listBiggerThanWindow) { // do your thing here... } 

आप दृश्य पर पोस्ट (रननाबल) को कॉल करके ऑन-क्रेते () में आयाम प्राप्त कर सकते हैं।