2011-11-23 8 views
7

मैं स्क्रीन पर नियंत्रण टैप करना चाहता हूं और सूची दृश्य स्क्रॉल करना चाहता हूं जब तक कि दी गई पंक्ति स्क्रीन के शीर्ष पर न हो, एक सुविधा जो आईओएस में बहुत आसान प्रतीत होती है।Froyo ListView के लिए smoothScrollToPositionFromTop?

मुझे एपीआई में ऐसी विधि मिली: http://developer.android.com/reference/android/widget/AbsListView.html#smoothScrollToPositionFromTop(int, int) हालांकि, यह एपीआई स्तर 11, हनीकॉम के लिए है। इसका मतलब है कि फोन आइस क्रीम सैंडविच तक इसका उपयोग नहीं कर सकते हैं, और यह लंबे समय तक लंबे समय तक होगा जब तक कि यह आइस क्रीम सैंडविच को ऐप्स चलाने के लिए न्यूनतम आवश्यकता के रूप में सेट करने के लिए व्यावहारिक न हो।

क्या Froyo में यह वही कार्यक्षमता प्राप्त करने का कोई तरीका है?

उत्तर

4

उपयोग

setSelection (int position) 
+0

तुम्हें पता है, मैं शपथ ली है | मुझे लगता है कि और इसे करने की कोशिश सूची स्क्रॉल नहीं किया था। लो और देखो, यह स्क्रीन के शीर्ष पर सही पंक्ति के साथ सूची को कूदता है, जो बहुत अच्छा है! मैं उस दृष्टिकोण के संभावित अवांछनीय साइड इफेक्ट्स के बारे में चिंतित हूं, क्योंकि इसका उद्देश्य इस उद्देश्य के लिए नहीं था, और अचानक कूद के बजाए चिकनी स्क्रॉल करना अच्छा लगेगा ... इसलिए मैं अभी भी जवाब स्वीकार कर रहा हूं अगर कोई एक बेहतर समाधान है। तत्काल उत्तर के लिए धन्यवाद, gwa, यदि आवश्यक हो तो मैं उस पर वापस आऊंगा। :) –

+0

कोई समस्या नहीं चाड! मैं इसे अपने ऐप में इस्तेमाल करता हूं और अब तक यह बहुत अच्छा काम करता है। यदि आपको कुछ बेहतर लगता है तो मुझे बताएं। धन्यवाद! – gwa

12

निम्नलिखित कोड सही नहीं है, लेकिन यह कई मामलों में काम करता है:

if (android.os.Build.VERSION.SDK_INT >= 11) 
{ 
    listView.smoothScrollToPositionFromTop(p, 0); 
} 
else if (android.os.Build.VERSION.SDK_INT >= 8) 
{ 
    int firstVisible = listView.getFirstVisiblePosition(); 
    int lastVisible = listView.getLastVisiblePosition(); 
    if (p < firstVisible) 
     listView.smoothScrollToPosition(p); 
    else 
     listView.smoothScrollToPosition(p + lastVisible - firstVisible - 2); 
} 
else 
{ 
    listView.setSelectionFromTop(p, 0); 
} 

+0

कृपया ध्यान दें कि 'smoothScrollToPositionFromTop() '' एक ज्ञात बग है। समस्या और समाधान के लिए http://stackoverflow.com/questions/14479078/smoothscrolltopositionfromtop-is-not-always-working-like-it-should/#20997828 देखें। –