2011-01-10 26 views
5

दोस्तों,एंड्रॉइड सूचीदृश्य में स्क्रॉल बार स्थिति को कैसे बनाए रखें?

मैं ListView में एक सरणी प्रदर्शित कर रहा हूं।

मैं बटन पर क्लिक गतिशील सरणी के डेटा को बदलने और यह सूची में सबसे स्क्रॉल पट्टी स्थिति को बनाए रखने नहीं है फोन

adapter.notifyDataSetInvalidated(); 

। (सूची में डेटा स्रोत की लंबाई हमेशा समान होती है)। कोई भी मुझे सूचीदृश्य की अंतिम स्थिति को कैसे बनाए रखने के लिए मार्गदर्शन कर सकता है?

किसी भी मदद की सराहना की जाएगी।

उत्तर

10

इस प्रयास करें:

//Get the top position from the first visible element 
int idx = list.getFirstVisiblePosition(); 
View vfirst = list.getChildAt(0); 
int pos = 0; 
if (vfirst != null) pos = vfirst.getTop(); 

//Restore the position 
list.setSelectionFromTop(idx, pos); 
+0

कृपया कोड सही करें या यह समझ में नहीं आता कि वी क्या है? ऐसा लगता है अगर (vfirst! = null) – UMAR

+0

कोड तय किया गया है। मुझे –

+2

कोड में छोटी त्रुटि बताएं: 'v.getTop()' vfirst.getTop() 'होना चाहिए – BenjaminButton

3

आप केवल डेटा में कुछ बदलाव ताज़ा करने के लिए चाहते हैं, तो इसके बजाय

notifyDataSetChanged(); 

का उपयोग करें। और स्क्रॉल एक ही स्थिति में होगा।

संबंधित मुद्दे