2012-11-15 17 views
17

मैं डेटा के एक सेट (ArrayList) के साथ एंड्रॉइड पर काम कर रहा हूं जो ListView पॉप्युलेट करता है। फिलहाल जब मैं सॉर्टिंग मोड बदलता हूं तो मैं एडाप्टर से जुड़े डेटा को फिर से ऑर्डर करता हूं और सूची अपडेट करने के लिए notifyOnDataChanged() पर कॉल करता हूं।एनिमेटिंग सूचीदृश्य डेटा परिवर्तन

यह काम करता है, लेकिन मैं प्रत्येक आइटम को अपनी नई स्थिति (जैसे आईओएस पर) एनिमेट करने में सक्षम होना चाहता हूं क्योंकि दोनों डेटा सेटों में एक ही आइटम होते हैं - बस पुन: व्यवस्थित होते हैं।

मैंने इस बारे में सोचने में कुछ समय बिताया है कि मैं इसे कैसे एनिमेट करूँगा और शून्य की ऊंचाई पर सूची में नीचे दिखाई देने वाली सभी वस्तुओं को एनिमेट करने का निर्णय लिया है और फिर नई स्थिति में उनके सामान्य आकार में एनिमेट कर सकता हूं। यह आंकड़ों में बढ़ने वाली सभी वस्तुओं को वास्तव में सूची में आगे बढ़ने देगा क्योंकि आइटम इसके ऊपर गायब हो जाते हैं। तो यह विचार है, लेकिन मैं यह समझ नहीं सकता कि इसे कैसे कार्यान्वित किया जाए।

डेटा इस तरह निरूपित किया जा सकता:

Set A | index | Set B 
------+-------+------ 
A  | 0  | B 
B  | 1  | A 
C  | 2  | C 
D  | 3  | F 
E  | 4  | G 
F  | 5  | E 
G  | 6  | D 

मैं सिर्फ कुछ है कि आईओएस Android के लिए डिफ़ॉल्ट रूप से संभालती है की तलाश में हूँ। यह मुश्किल नहीं होना चाहिए।

+2

मुझे भी इसमें वास्तव में रूचि है। न केवल पुन: आदेश, बल्कि परिवर्धन/निष्कासन को एनिमेट करना। – goncalossilva

+0

क्या आपने इसे ठीक किया? मैं समाधान को जानना चाहता हूं। क्या आप कृपया मदद कर सकते हैं ?? – Nevaeh

उत्तर

11

एक छोटा सा उदाहरण बनाया गया है जो इस तरह की सूची के पुनर्मूल्यांकन को एनिमेट करता है। एनीमेशन बिल्कुल ठीक नहीं है जैसा आपने वर्णन किया है लेकिन उम्मीद है कि यह आपको प्राप्त करने में आपकी सहायता करता है।

  1. सहेजें notifyDataSetChanged से पहले वर्तमान स्थिति():

    https://github.com/fabrantes/widgetexamples

    प्रवाह कुछ इस तरह है। राज्य को सहेजना प्रत्येक आइटम के लिए getTop() समन्वय को संग्रहीत करने में होता है।

  2. सूचित करने के बादडेटाट चेंज, सभी सूची दृश्य दृश्यों के माध्यम से जाएं और नई आइटम स्थिति और पुरानी स्थिति के बीच ऊंचाई अंतर के साथ एक अनुवाद एनीमेशन लागू करें।
+0

आप सूची में जोड़ने/हटाने के लिए कैसे पहुंचेंगे? क्या यह पुनः क्रम में गड़बड़ नहीं करेगा? – goncalossilva

+0

मैं वास्तव में पसंद करूंगा कि यह एक सूची दृश्य उपclass के रूप में आएगा, और यदि इसे अतिरिक्त/हटाए गए आइटमों के लिए समर्थन मिला था, लेकिन हे, प्रयास के लिए धन्यवाद :-) – goncalossilva

+0

जोड़ने/निकालने के बारे में निश्चित नहीं है। इसे एक सूची दृश्य उपclass बनाने के लिए, यह आसान होना चाहिए। कहा उपखंड बनाएं और आवश्यक कार्यों को अंदर रखें। फिर अधिसूचना ओवरराइड करेंडेटासेट करें और उन कार्यों को कॉल करें (ऑर्डर के साथ सावधान)। – fabrantes

3

मुझे आशा है कि यह आपकी समस्याओं का हल

<ListView 
      android:id="@+id/listUniversal" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layoutAnimation="@anim/controller"> 

     </ListView> 

anim.xml है

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
    android:animation="@anim/scale_1" 
    android:delay="50%" /> 

scale_1.xml

<scale 
    android:duration="200" 
    android:fromXScale="0.1" 
    android:fromYScale="0.1" 
    android:pivotX="10%" 
    android:pivotY="10%" 
    android:startOffset="100" 
    android:toXScale="1" 
    android:toYScale="1.0" /> 

+0

स्केल तत्व और सही के लिए नामस्थान जोड़ें! (xmlns: android = "http://schemas.android.com/apk/res/android")। – Fer

+0

सूची से किसी आइटम को हटाने के लिए एनीमेशन के बारे में क्या? मैं यह कैसे कर सकता हूं? – Fer

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