2012-04-04 12 views
5

मैं एक सूची दृश्य देखना चाहता हूं कि जब मैं आइटम पर क्लिक करता हूं तो दृश्य बाईं ओर स्लाइड करता है।क्लिक किए जाने पर ListView में आइटम को एनिमेट कैसे करें?

तो मेरे पास है:

listView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      arg1.startAnimation(openAnimation); 
     } 
    }); 

हालांकि, एनीमेशन अलग आइटम के लिए सूची के बजाय एक में लागू पर क्लिक किया जा रहा है। व्यवहार यादृच्छिक प्रतीत होता है क्योंकि कभी-कभी एक ही समय में एक से अधिक आइटम होते हैं।

जैसा कि मुझे संदेह है कि एडाप्टर आइटम बनाने के लिए इसका दृष्टिकोण पुन: उपयोग करने के तरीके के कारण है। मैं अपने एडाप्टर में getView विधि को संशोधित करने के लिए हर बार नए दृश्य को बढ़ाने के लिए गया था। फिर एनीमेशन और नहीं होता है।

क्या इसे हल करने का कोई तरीका है? मैंने एनीमेशन को मेरे एडाप्टर के अंदर ले जाने की कोशिश की लेकिन फिर मैं इसे सूचीदृश्य पर अन्य क्रियाओं से संबद्ध नहीं कर सकता।

आखिरकार, मैं आइटम को क्लिक करने योग्य होना चाहता हूं लेकिन जब बाएं/दाएं स्वाइप करें हटाएं बटन हटाएं (आईओएस डिलीट व्यवहार)। क्या मैं यहां गलत ट्रैक पर हूं? यह संभव होना चाहिए हालांकि एंड्रॉइड अधिसूचना बार में हटाने के लिए स्वाइप लागू कर सकता है।

+0

"आईओएस व्यवहार हटाएं" नहीं नहीं नहीं! एंड्रॉइड आईओएस नहीं है! कृपया आईओएस डिजाइन पैटर्न का उपयोग न करें। एंड्रॉइड उपयोगकर्ता उम्मीद करते हैं और एंड्रॉइड उपयोगकर्ता अनुभव नहीं और आईफोन अनुभव। – slayton

+0

मैं आपकी चिंता को समझता हूं। मैं पूरी तरह से इस विचार के खिलाफ हूं। लेकिन मैं यहां निर्णय लेने वाला नहीं हूं। लेकिन आपको इसे स्वीकार करना होगा, फिर भी एंड्रॉइड पर निकालने के लिए स्वाइप करें। कार्यान्वयन वहाँ है, बस अलग प्रस्तुति। – RobGThai

+0

अधिसूचना फलक में शायद सूचीदृश्य का एक कस्टम कार्यान्वयन है क्योंकि मूल सूचीदृश्य वर्ग व्यवहार को हटाने के लिए इस स्वाइप का समर्थन नहीं करता है – slayton

उत्तर

1

मैं अनुशंसा करता हूं कि आप this धागा भी देखें।

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

मैं कम से कम 2 पंक्ति प्रकारों के अनुरूप एडाप्टर को फिर से लिखूंगा: सामान्य पंक्तियां, और पंक्तियां हटा दी जाएंगी। अपने एडाप्टर की "getView()" विधि में, आपको केवल सामान्य दृश्यों के कन्वर्ट व्यू का पुन: उपयोग करना चाहिए। पंक्तियों को हटाया जाना चाहिए उन्हें पुन: उपयोग नहीं करना चाहिए, ताकि एनिमेटिंग किसी को दूसरों को संशोधित न करे। सामान्य पंक्ति पर क्लिक करने पर, आपको सबसे पहले एडाप्टर को बताना चाहिए कि क्लिक की गई स्थिति पर पंक्ति अब टाइप-टू-डिलीट की गई है, कॉल करें। नोटिफाइडडेटाट चेंज(), और फिर उस पंक्ति पर एनीमेशन शुरू करें।

+0

मैं उस पंक्ति पर केवल एनीमेशन कैसे शुरू करूं? मैं v = inflater.inflate देख रहा हूँ (R.layout.list_view_custom, शून्य); और फिर श्रोता में मेरे पास अंतिम एनिमेशन एनीमेशन = एनीमेशनउटिल.लोडएनीमेशन (parent.getContext(), R.anim.fade_in_expand) है; v.startAnimation (एनीमेशन); लेकिन कुछ भी नहीं होता है। – MinceMan

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