2013-02-17 25 views
5

लाइन नंबर (एडाप्टर के getView() में) टेक्स्टबॉक्स के आधार पर टेक्स्टबॉक्स में अलग-अलग पंक्तियों के लिए अलग-अलग रंग होते हैं। अब जब मैं मैन्युअल रूप से ListView को स्क्रॉल करता हूं तो सही रंग नीचे की रेखाओं में प्रदर्शित होता है जो प्रकट होता है। लेकिन जब मैं स्क्रॉल का उपयोग करता हूं, ऐसा नहीं होता है, सभी पंक्तियों का खुलासा एक ही रंग होता है (वे अपडेट नहीं होते हैं)।scrollTo ListView का उपयोग करते समय रीफ्रेश नहीं होता है, लेकिन मैन्युअल रूप से इसे स्क्रॉल करते समय

क्या किसी को इस समस्या का सामना करना पड़ा है? यह परेशान लगता है!

उत्तर

3

ListView#scrollTo सूची सामग्री को स्क्रॉल नहीं करता है। (यह एक मानक दृश्य विधि, और कम से सभी सूचियों के लिए विशिष्ट नहीं है:। यह ListView दृश्य खुद स्क्रॉल) इसके बजाय

, स्क्रॉल करने के लिए ListView#setSelectionFromTop(0, int y) उपयोग करके देखें।

एपीआई 1 9 + में ListView#scrollListBy(int y) विधि है यदि आप किटकैट और ऊपर प्रोग्रामिंग कर रहे हैं।

+0

मैं एक ही समाधान के लिए देख रहा हूँ .... scrollTo सूचीदृश्य अपडेट नहीं करता का उपयोग कर setSelectionFromTop सूचीदृश्य स्क्रॉल नहीं होता content..And .... मैं 'y' मान है लेकिन मुझे नहीं पता कि कौन सी स्थिति स्क्रॉल करना है ... कोई सुराग? – VijayRaj

+0

यदि आप 0 की स्थिति के साथ 'setSelectionFromTop (int posittion, int y)' का उपयोग करते हैं, तो 'ListView' आपकी सूची के शीर्ष पर चलेगा। 'Y' मान उस सूची दृश्य आइटम के शीर्ष किनारे से दूरी है। (आपको अपने 'y' मान को अस्वीकार करना पड़ सकता है।) – Makario

+0

मैंने 0 के रूप में स्थिति के साथ 'setSelectionFromTop (int posittion, int y)' की कोशिश की, लेकिन सूची' y के बावजूद पहली स्थिति (स्क्रॉल नहीं करता) पर बनी हुई है 'मूल्य .... – VijayRaj

0

हमारी परियोजना ListView#setSelectionFromTop(0, int y) पर कोई प्रभाव नहीं पड़ता है। इसलिए हम compat-शैली में इस हैक कर लिया:

class Hacks { 

static { 
    Method trackMotionScroll = null; 
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { 
     try { 
      trackMotionScroll = AbsListView.class 
        .getDeclaredMethod("trackMotionScroll", int.class, int.class); 
      trackMotionScroll.setAccessible(true); 
     } catch (NoSuchMethodException e) { 
      Exceptions.crash(e); 
     } 
    } 
    listViewTrackMotionScroll = trackMotionScroll; 
} 

public static void scrollListBy(ListView listView, int y) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     listView.scrollListBy(y); 
    } else { 
     try { 
      listViewTrackMotionScroll.invoke(listView, -y, -y); 
     } catch (Exception e) { 
      Exceptions.crash(e); 
     } 
    } 
} 
}