कहा जाता है मैंने व्यूपेजर क्लास को बढ़ाया है और पेज चेंजलिस्टर पर लागू किया है। मैं इस व्यूपैगर का उपयोग शेरलॉक फ्रैगमेंट के अंदर सर्कलपेज इंडिकेटर के साथ संयोजन में करता हूं। ViewPager में ImageViews और TextViews शामिल हैं, कुछ भी फैंसी नहीं है।एंड्रॉइड व्यूपेजर ऑनपेजस्क्रॉलस्टेट चेंज को कभी भी
मुझे पृष्ठ बदलने के हर बार ViewPager के नीचे कुछ करने की आवश्यकता है। इसलिए, मुझे लगा कि मुझे onPageScrollStateChanged का उपयोग करने की आवश्यकता है और सत्यापित करें कि जब राज्य आईडीई है, या कुछ।
समस्या यह है कि 3 कार्यान्वित तरीकों से (ऑनपेजस्क्रॉलस्टेट चेंज, ऑनपेज सिलेक्टेड और ऑनपेजस्क्रॉल किया गया), केवल पेज पर स्क्रॉल किया जाता है (मैंने प्रत्येक विधि में लॉग संदेश के साथ चेक किया है)। ऐसा क्यों है ? नीचे कोड
public class UninterceptableViewPager extends ViewPager implements OnPageChangeListener{
private ArrayList<TwoRowListViewAdapter> mAdaptersList = null;
private ListView mListView = null;
private ProgressBar mProgressBar = null;
public UninterceptableViewPager(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public boolean onInterceptTouchEvent(MotionEvent event)
{
getParent().requestDisallowInterceptTouchEvent(true);
return super.onInterceptTouchEvent(event);
}
public void setAdaptersList(ArrayList<TwoRowListViewAdapter> adaptersList)
{
mAdaptersList = adaptersList;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
super.onPageScrolled(position++, positionOffset, positionOffsetPixels);
if (positionOffset == 0) // FIXME
loadHistoryPage(position);
}
@Override
public void onPageSelected(int position) {}
@Override
public void onPageScrollStateChanged(int state) {}
// -------------------------------------------------------------------------------------------
// -------------- Helper Methods
// -------------------------------------------------------------------------------------------
public void setListView(ListView listview)
{
mListView = listview;
}
public void setProgressBar(ProgressBar progressBar)
{
mProgressBar = progressBar;
}
private void loadHistoryPage(int position)
{
mListView.setVisibility(View.INVISIBLE);
mProgressBar.setVisibility(View.VISIBLE);
mListView.setAdapter(null);
mListView.setAdapter(mAdaptersList.get(position-1));
mProgressBar.setVisibility(View.INVISIBLE);
mListView.setVisibility(View.VISIBLE);
}
}
हाँ, मुझे लगता है कि अपने इस धारणा सही है। खैर, मुझे इसे सत्यापित करने की ज़रूरत है, लेकिन यह समझ में आता है। इस सही उत्तर के लिए बहुत बहुत धन्यवाद! मैं कल समाधान का परीक्षण करूंगा और अपने निष्कर्षों की रिपोर्ट करूंगा। –
ठीक है मैं आपकी प्रतिक्रिया के लिए इंतजार करूँगा .. – karn
बहुत बढ़िया। यह पूरी तरह से काम करता है। आपका बहुत बहुत धन्यवाद ! –