2011-09-30 27 views
5

मैं TableLayout का उपयोग कर रहा हूं। जिसमें स्क्रॉल करने योग्य बनाने के लिए 100 आइटम हैं I स्क्रॉलव्यू के अंदर टेबललेआउट का उपयोग कर रहा हूं। लेकिन मुझे यह पता लगाना है कि उपयोगकर्ता ने आखिरी पंक्ति में स्क्रॉल किया है या नहीं। यदि उपयोगकर्ता अंतिम दृश्य तक स्क्रॉल कर चुका है तो उपयोगकर्ता को टोस्ट संदेश दिखाया जाएगा। लेकिन यह कैसे पता चलेगा कि उपयोगकर्ता ने टेबललेआउट की अंतिम पंक्ति तक स्क्रॉल किया है। मैंने कोड को TableLayout inside ScrollVie डब्ल्यू से संदर्भित किया है।अंतिम स्क्रॉल दृश्य स्थिति कैसे प्राप्त करें, स्क्रॉलव्यू

http://huuah.com/using-tablelayout-on-android/

+0

क्यों डॉन आप 'ListView' और 'lv.setOnScrollListener()' का उपयोग नहीं करते हैं या [इस SO उत्तर] पर एक नज़र डालें [http://stackoverflow.com/questions/3948934/synchronise-scrollview-scroll-positions-android/3952629# 3 9 52629) –

+0

मैं सूचीदृश्य का उपयोग नहीं कर सकता क्योंकि। परियोजना पहले ही विकसित हो चुकी है। यह विभिन्न स्थानों पर लागू है – bapi

+0

ओवरस्क्रोल विधि पर देखने का प्रयास करें .. – Rejinderi

उत्तर

13

नई स्क्रॉल y स्थिति + स्क्रॉल दृश्य ऊंचाई> = tableview ऊंचाई आप का मतलब है कि सूची के अंत तक पहुँच चुके हैं।

इसे प्राप्त करने के लिए आपको अपना कस्टिरॉम स्क्रॉलव्यू लिखना होगा।

चरण -1 आप कस्टम स्क्रॉल दृश्य scrollview

विस्तार
package com.sunil; 
import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.ScrollView; 

public class LDObservableScrollView extends ScrollView { 

    private LDObservableScrollViewListener scrollViewListener = null; 

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

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

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

    public void setScrollViewListener(LDObservableScrollViewListener scrollViewListener) { 
     this.scrollViewListener = scrollViewListener; 
    } 

    @Override 
    protected void onScrollChanged(int x, int y, int oldx, int oldy) { 
     super.onScrollChanged(x, y, oldx, oldy); 
     if(scrollViewListener != null) { 
      scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); 
     } 
    } 

} 

चरण -2 एक श्रोता बनाएं scrollchanged

पैकेज com.sunil पता लगाने के लिए बनाने के लिए है, आयात LDObservableScrollView;

public interface LDObservableScrollViewListener { 

    void onScrollChanged(LDObservableScrollView scrollView, int x, int y, int oldx, int oldy); 

} 

scrollview के बजाय लेआउट एक्सएमएल में चरण -3 कस्टम स्क्रॉल दृश्य का उपयोग

<com.abc.LDObservableScrollView android:layout_width="fill_parent" android:layout_marginTop="1dip" 
     android:id="@+id/OLF_ScrollView" android:layout_height="fill_parent" android:background="@drawable/small_list_back"> 
     <TableLayout android:layout_width="fill_parent" android:id="@+id/OLF_tableLayout_TableLayout" android:layout_height="fill_parent"> 
     </TableLayout> 
    </com.abc.LDObservableScrollView> 

चरण -4 अपनी गतिविधि कक्षा में या स्क्रॉल घटना का उपयोग जहां पता लगाने के लिए चाहते हैं follwoing कोड

public class DetectHere implements LDObservableScrollViewListener{ 
... 


LDObservableScrollView scrollView = (LDObservableScrollView)view.findViewById(R.id.OLF_ScrollView); 
     scrollView.setScrollViewListener(this); 

..... 

@Override 
    public void onScrollChanged(LDObservableScrollView scrollView, int x, 
      int y, int oldx, int oldy) { 
     // TODO Auto-generated method stub 
     if((scrollView.getHeight()+y) >= tableLayout.getHeight()){ 
      Log.e("Custom Listener ", "END OF LIST OCCURRED ::"); 
     } 
    } 
+0

धन्यवाद, यह मेरे लिए काम करता है – bapi

1

यह मेरे लिए भी काम करता था, लेकिन मेरा वाई मान ऑनक्रोलचैंग पर कभी नहीं मेरे सैमसंग गैलेक्सी टैब 2 7 "की ऊंचाई से अधिक है। लेकिन यह आकाशगंगा टैब 2 10.1 " कोई भी विचार क्यों?

[संपादित करें] मैं अब देखा है कि यह तब होता है जब स्क्रीन एक निश्चित ऊंचाई से कम है, उदाहरण के लिए 1000 पिक्सेल। जब मैंने बनाया क्योंकि पर काम करता है 10.1 "गैलेक्सी टैब 2 पर 1200 से कम मेरी स्क्रॉल की सामग्री, यह अधिकतम ऊंचाई पहचान के लिए काम करना बंद कर दिया।

[संपादित करें] मैं ऐसा करने के लिए में समाधान मिल गया है, यह पुस्तक के आकार सही ढंग से पता नहीं लगा पा रहा था, क्या मेरे द्वारा की गई पीछा कर रहा था:

protected void onScrollChanged(int horizontalScrollPosition, int verticalScrollPosition, int previousHorizontalScrollPosition, int previousVerticalScrollPosition) { 
    int scrollTotalHeight = this.getChildAt(0).getHeight() - super.getHeight(); 
    if(_previousImage != null) 
     if(verticalScrollPosition <= 0) _previousImage.setVisibility(View.GONE); 
    if(_nextImage != null) 
     if(verticalScrollPosition >= scrollTotalHeight) _nextImage.setVisibility(View.GONE); 
    super.onScrollChanged(horizontalScrollPosition, verticalScrollPosition, previousHorizontalScrollPosition, previousVerticalScrollPosition); 
} 
संबंधित मुद्दे