2013-07-03 30 views
5

का स्क्रॉल ऑफ़सेट क्या वर्तमान स्क्रॉल ऑफसेट या ग्रिड व्यू की स्क्रॉल स्थिति निर्धारित करने का कोई तरीका है?ग्रिड व्यू

View.getScrollY() // Underlying var is not updated during a scroll. 

मैं एक OnScrollListener स्थापित करने की कोशिश की है लेकिन Onscroll कॉलबैक ठीक मेरी प्रयोजनों के लिए पर्याप्त सुक्ष्म नहीं है।

यहां बताया गया है कि मैं ऑनस्क्रॉल लिस्टनर का उपयोग करके स्क्रॉल ऑफ़सेट निर्धारित करने का प्रयास कैसे कर रहा हूं।

private int getScrollY() { 
    int top = 0; 
    if (mGridView.getChildCount() > 0) { 
     final View firstView = mGridView.getChildAt(0); 
     top = firstView.getTop(); 
    } 
    return top; 
} 

इस कोड के साथ समस्या यह है कि ऊपर की ओर स्क्रॉल करते समय लौटाया गया ऑफसेट गलत है; शीर्ष दृश्य पुनर्नवीनीकरण किया जाता है और इसलिए, वाई ऑफ़सेट कूदने लगता है;

क्या ग्रिड व्यू के स्क्रॉल ऑफसेट की गणना करने का कोई अच्छा तरीका है? मुझे एक अच्छा समाधान नहीं मिल रहा है।

उत्तर

4

उपयोग इस।

public class CustomGridView extends GridView { 

    public CustomGridView(Context context) { 
     super(context); 
    } 

    public CustomGridView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomGridView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    /* ADD THIS */ 
    @Override 
    public int computeVerticalScrollOffset() { 
     return super.computeVerticalScrollOffset(); 
    } 
} 

रिटर्न जब कहा जाता

+0

ओह जवाब देने के लिए धन्यवाद! मैं इसे समझने के बाद खुद को जवाब देना भूल गया था। – mdupls

+0

@mdupls यह एक सही वाई ऑफ़सेट देने लगता है। लेकिन ग्रिडव्यू को उसी ऑफसेट पर सेट करने के लिए आप किस फ़ंक्शन का उपयोग करते हैं? मैंने काफी कुछ करने की कोशिश की है, और सही परिणाम नहीं मिल सकते हैं। हमेशा विभिन्न पदों में खत्म हो जाते हैं। मैं अनुमान लगा रहा हूं, यह उतना आसान नहीं है जितना मैंने सोचा था कि यह होगा। –

+0

gridview.smoothScrollToPosition (int अनुक्रमणिका) – mdupls

1

आप GridView.getFirstVisiblePosition() का उपयोग कर सकते हैं।

http://developer.android.com/reference/android/widget/AdapterView.html#getFirstVisiblePosition()

+0

इसके अलावा, http://stackoverflow.com/a/12795511/377260 –

+0

"देख एक int मूल्य इस कोड के साथ मुद्दा यह है कि लौटे y ऑफसेट है जब ऊपर की ओर स्क्रॉल गलत है ; शीर्ष दृश्य पुनर्नवीनीकरण किया जाता है और इसलिए, वाई ऑफसेट कूदने लगता है; " – mdupls

+0

असल में, आप स्क्रॉल को प्रबंधित करने के तरीके के रूप में पहले दृश्यमान सेल की शीर्ष विशेषता का उपयोग नहीं कर सकते हैं। जिस पल को रीसाइक्लिंग किया जाता है, आपके पास सेल के बराबर ऊपरी बाउंड के साथ एक कूद है .getHeight() – mdupls