2009-11-20 20 views
26

मैं स्क्रॉलिंग बंद होने के बाद कुछ करने की कोशिश कर रहा हूं। इसलिए, मैंने स्क्रॉलिंग बंद होने पर OnScrollListener#onScrollStateChanged(SCROLL_STATE_IDLE) का उपयोग करने का प्रयास किया (या तो TOUCH_SCROLL or FLING) (1.5 में यह अपेक्षा करता है कि यह अपेक्षा करता है)। लेकिन जब यह 2.0 पर चलता है, तो स्क्रॉलस्टेट चेंज को उंगली जारी करने के बाद ईवेंट प्राप्त नहीं किया जा सकता है। क्या उस घटना का पता लगाने के लिए कोई कॉलबैक है या फिर भी?Android ListView स्क्रॉलिंग का पता कैसे लगाया गया?

+0

आप के लिए स्वीकार्य नीचे इस सवाल का जवाब है? यदि ऐसा है, तो कृपया स्वीकार करें, अन्यथा मैं उत्तर पर किसी प्रकार की प्रतिक्रिया के लिए तत्पर हूं ;-) –

उत्तर

65

setOnScrollListener उपयोग करने का प्रयास और scrollState == 0 के साथ onScrollStateChanged लागू ... तुम क्या करने की जरूरत क्या करना ...

setOnScrollListener(new OnScrollListener() { 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     // TODO Auto-generated method stub 
    } 

    public void onScrollStateChanged(AbsListView view, int scrollState) { 
     if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { 
      Log.i("a", "scrolling stopped..."); 
     } 
    } 
}); 
+23

हार्डकोड के बजाय 0 के बराबर है, ऑनस्क्रॉल लिस्टनर का उपयोग करें .SCROLL_STATE_IDLE यदि आप स्क्रॉलिंग का पता लगाने की कोशिश कर रहे हैं तो यह काम करने जा रहा है बंद हो जाता है ... यदि आप यह पता लगाने की कोशिश कर रहे हैं कि उंगली/फ़्लिंग अब स्क्रीन को छू रही नहीं है, तो यह एक अलग दृष्टिकोण होगा .. –

+0

मैंने अभी 2.0 के साथ उपरोक्त कोड का परीक्षण किया है और यह ठीक काम करता है ... –

7

चाल की है जब उपयोगकर्ता टूट पड़नेवाला और जब है ट्रैक रखने के लिए है वो नहीं हैं। ऐसा लगता है कि यह एकमात्र भेदभाव है जो आप कर सकते हैं क्योंकि, जैसा कि आपने कहा था, एक उंगली से निष्क्रिय होने के लिए स्क्रॉलिंग से संक्रमण दर्ज नहीं है। ,

public View getView(int position, View convertView, ViewGroup parent) { 
    // Bunch of code.... 

    if (!flinging) { 
     ImageLoader.loadImage(BrowseRecipes.this, image, recipe.getImageURL()); 
    } 
} 

बजाय श्रोता में परिवर्तन पर प्रतिक्रिया की, बस छवियों (जो कुछ भी आप की जरूरत लोड या: ListView अनुकूलक में

public void onScrollStateChanged(AbsListView view, int scrollState) {  
    if (scrollState != OnScrollListener.SCROLL_STATE_FLING) { 
     flinging = false; 
     int count = view.getChildCount(); 

     for (int i = 0; i < count; i++) { 
      View convertView = view.getChildAt(i); 
      Recipe recipe = (Recipe) convertView.getTag(); 
      ImageView image = (ImageView) convertView.findViewById(R.id.icon); 

      if (recipe != null && recipe.getImageURL() != null) { 
       ImageLoader.loadImage(this, image, recipe.getImageURL()); 
      } 
     } 
    } else { 
     flinging = true; 
    } 
} 

और फिर: यहाँ है कि मैं क्या बारे में बात कर रहा हूँ है यह गहन करने के लिए) पहली जगह तक जब तक कोई झुकाव नहीं चल रहा है।

यह सब अपने प्रोजेक्ट यहाँ से बाहर ले जाया जाता है: https://github.com/pkulak/mealfire_android

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