2016-11-01 3 views
7

मेरे पास एक सूची दृश्य है जो प्रारंभिक डेटा स्रोत प्राप्त करता है। उपयोगकर्ता तब एक खोज चला सकता है जो ListView को एक नए डेटा स्रोत के साथ अपडेट करेगा। दुर्भाग्यवश जब ऐसा होता है, तो स्क्रॉल स्थिति रीसेट हो जाती है, जो आदर्श नहीं है।क्या प्रतिक्रिया-मूल सूची दृश्य डेटा स्रोत को अद्यतन करने का कोई तरीका है, इसलिए यह स्क्रॉल स्थिति को रीसेट नहीं करता है?

मैं एक ही ListView.DataSource वस्तु पुन: उपयोग करने के बजाय एक नया बनाने की कोशिश की, लेकिन वह मुझे एक ही परिणाम दिया:

... 

dataSource: new ListView.DataSource({ 
    rowHasChanged: (r1, r2) => r1 !== r2 
}), 

componentWillReceiveProps(nextProps) { 
this.setState({ 
    dataSource: this.dataSource.cloneWithRowsAndSections({...}); 
} 

... 

मैं के बाद डेटा स्रोत बदल गया है ListView पर scrollTo उपयोग करने की कोशिश, लेकिन यह ऐप के आस-पास कूदने के मामले ... अच्छे अनुभव नहीं। क्या कोई सूची दृश्य सेटिंग या डेटा स्रोत को अद्यतन करने का एक अलग तरीका है जो स्क्रॉल स्थिति को रीसेट करने से रोक देगा?

सूची दृश्य में 2 चिपचिपा शीर्षलेख हैं, शीर्ष शीर्षलेख में 2 पंक्तियां एक पृष्ठ विवरण और एक रेडक्स कंटेनर है जो 3 छवि ग्रिड प्रस्तुत करता है। दूसरा खंड 50 घटकों की एक सूची है जो कुछ हद तक भारी है: एक वर्ग छवि, कुछ पाठ और कुछ एसवीजी। मेरी वर्तमान विधि स्क्रॉल स्थिति को मजबूर करने के लिए ऑनंटेंट साइज चेंज का उपयोग करके काम करती है, लेकिन इससे स्क्रॉल स्थिति कूदने का कारण बनता है और यह शौकिया दिखता है।

अद्यतन: ListView के लिए प्रलेखन और स्रोत कोड में खोदना अंततः केवल स्क्रॉलव्यू प्रस्तुत करता है। मैं शुरुआती स्क्रॉल स्थिति सेट करने के लिए सामग्री ऑफसेट का उपयोग कर सकता हूं, लेकिन जब सूचीव्यू डेटासोर्स अपडेट्स की मदद करता है तो यह मदद नहीं करता है; यहां तक ​​कि हार्डकोडिंग सामग्री भी ऑफसेट मदद नहीं करता है। मैं भी स्थापित करने , झूठी जो वास्तव में उपयोगकर्ता संचालित स्क्रॉल रोकने था scrollEnabled कोशिश की, लेकिन जब यह डेटा स्रोत अद्यतन किया जाता है ListView स्क्रॉल स्थिति अभी भी रीसेट है: रों

अद्यतन 2: मैं कुछ आगे डिबगिंग किया है और पता चला है कि सुझाई गई पंक्ति हैसचेंज और सेक्शन हेडरहैस चेंज किए गए फ़ंक्शंस केवल पंक्तियों/सेक्शन हेडर को प्रस्तुत करने का एक बहुत अच्छा काम करते हैं जिन्हें प्रस्तुत करने की आवश्यकता होती है।

उत्तर

0

आप अपने पुस्तक स्थिति को बचा सकता है और ListView के लिए नए मंच की स्थापना के बाद - एनीमेशन के बिना scrollTo बनाने

+0

मैंने इस स्टीरियोडेनिस की कोशिश की और यह "काम करता है" लेकिन यूएक्स स्वीकार्य नहीं है । दृश्य बहुत सारे, झिलमिलाहट के आसपास उछालता है और कभी-कभी थोड़ा ऑफसेट स्थानों में समाप्त होता है। – SomethingOn

+0

मैं एक आसान उदाहरण बनाने की कोशिश करूंगा और फिर मेरा जवाब अपडेट कर दूंगा। हो सकता है कि आपको लोडर या अन्य तत्व जोड़ना चाहिए, जो उपयोगकर्ता को दिखाता है कि डेटा बदल रहा है – stereodenis

+0

[** यह जांचें **] (http://stackoverflow.com/questions/3014089/maintain-save-restore-scroll-position- कब-वापसी-से-एक-सूचीदृश्य) या [** यहां **] (https://groups.google.com/forum/#!topic/android-developers/5_Re2eHgaFc) –

0

क्या मैं अपने मामले में क्या करना होगा उछल प्रभाव को छिपाने के लिए एक लोडिंग स्पिनर के साथ ओवरले का एक प्रकार दिखाने के लिए है और फिर स्क्रॉल सेट होने के बाद ओवरले को छुपाएं, यह नहीं बता सकता कि मैं इसे कैसे प्राप्त कर सकता हूं क्योंकि मैं आरएन के लिए काफी नया हूं लेकिन निश्चित रूप से यह संभव है

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

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