2010-12-13 17 views
9

पर स्क्रॉलिंग श्रोता पर बाध्यकारी बस पूछना चाहता था कि कुछ श्रोता सूचीव्यू स्क्रॉल ईवेंट में बाध्य करने की संभावना है।एंड्रॉइड ListView

मैं जो हासिल करना चाहता हूं वह यह है कि एक बार ListView नीचे स्क्रॉल किया गया है, यदि कोई है तो मैं अधिक डेटा के लिए सर्वर से पूछना चाहता हूं।

मुझे पता है कि एक समारोह है: getLastVisiblePosition() लेकिन मुझे लगता है कि वर्तमान में अंतिम दृश्य स्थिति की तुलना करने के लिए मुझे किसी प्रकार के श्रोता में उपयोग करना चाहिए, क्या मैं सही हूँ?

चियर्स, /मार्सिन

उत्तर

23

बस TomTo के जवाब पर एक्सट्रपलेशन, तुम ऐसा कैसे कर सकते हैं पर कुछ विचार (सैद्धांतिक, मैं इस व्यवहार में प्रयास नहीं किया है):

ListView lv = (ListView)findViewById(R.id.list_view); 
lv.setOnScrollListener(new OnScrollListener() { 
    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, 
     int visibleItemCount, int totalItemCount) { 
     //Check if the last view is visible 
     if (++firstVisibleItem + visibleItemCount > totalItemCount) { 
      //load more content 
     } 
    } 
}); 

firstVisibleItem के बाद से एक सूचकांक रिटर्न है (0-आधारित) , मैं वास्तविक आइटम नंबर प्राप्त करने के लिए एक से बढ़ता हूं। फिर, यदि वह, दृश्यमान वस्तुओं की संख्या, वस्तुओं की कुल संख्या से अधिक है, तो सिद्धांत में अंतिम दृश्य दिखाई देना चाहिए। कोई समस्या नहीं होनी चाहिए, लेकिन ध्यान रखें कि स्क्रॉलिंग समाप्त होने तक इसे तब तक नहीं बुलाया जाता है।

+0

मैं एक मिनट में एक नजर है और आप – Marcin

+6

ठीक पता तो यह की तरह कुछ किया जाना चाहिए करने देगा: अगर (view.getLastVisiblePosition () +1 == NUMBER_OF_RESULTS) {} इसके बजाय आपका IF, लेकिन अच्छा संकेत, वैसे भी, धन्यवाद – Marcin

+1

हे, getLastVisiblePosition के बारे में भी नहीं सोचा था। बहुत आसान :) मैं खुश हूं कि आपका यह चलने लगा! – kcoppock

1

if (++visibleItemCount > totalItemCount)

बजाय

इस्तेमाल किया

if (++firstVisibleItem + visibleItemCount > totalItemCount)