IOS में, UITableView पंक्तियों को जोड़ने और हटाने का प्रयास करने के लिए एक बहुत ही आसान और शक्तिशाली सुविधा है, यहां एक यूट्यूब वीडियो से एक क्लिप डिफ़ॉल्ट एनीमेशन दिखा रहा है। ध्यान दें कि आसपास की पंक्तियाँ हटाए गए पंक्ति पर कैसे गिरती हैं। यह एनीमेशन उपयोगकर्ताओं को इस बात पर नज़र रखने में मदद करता है कि किसी सूची में क्या बदला और कहाँ सूची में वे उस समय देख रहे थे जब डेटा बदल गया था।
जब से मैं एंड्रॉइड पर विकास कर रहा हूं, मुझे एक टेबल व्यू में व्यक्तिगत पंक्तियों को चेतन करने के लिए कोई समान सुविधा नहीं मिली है । notifyDataSetChanged()
मेरे एडप्टर पर कॉल करने से लिस्ट व्यू तुरंत नई जानकारी के साथ अपनी सामग्री को अपडेट करता है। जब डेटा में बदलाव होता है, तो मैं एक नई पंक्ति का एक सरल एनीमेशन दिखाना चाहता हूं या उसमें खिसकना चाहता हूं, लेकिन मुझे ऐसा करने का कोई दस्तावेज नहीं मिला है। ऐसा लगता है कि LayoutAnimationController को काम करने के लिए एक कुंजी मिल सकती है, लेकिन जब मैं अपने ListView ( ApiDemo के LayoutAnimation2 के समान ) पर एक LayoutAnimationController सेट करता हूं और सूची प्रदर्शित होने के बाद अपने एडॉप्टर से तत्वों को हटाता है, तो तत्व तुरंत अनुपलब्ध होने के बजाय गायब हो जाते हैं। ।
मैंने किसी आइटम को हटाए जाने के बाद निम्नलिखित चीजों को भी आज़माया है:
@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
Animation animation = new ScaleAnimation(1, 1, 1, 0);
animation.setDuration(100);
getListView().getChildAt(position).startAnimation(animation);
l.postDelayed(new Runnable() {
public void run() {
mStringList.remove(position);
mAdapter.notifyDataSetChanged();
}
}, 100);
}
हालाँकि, एनिमेटेड पंक्ति के आस-पास की पंक्तियाँ तब तक स्थिति को स्थानांतरित नहीं करती हैं जब तक कि वे अपने नए पदों पर नहीं जातीं जब उन्हें notifyDataSetChanged()
बुलाया जाता है। ऐसा लगता है कि एक बार जब इसके तत्व रख दिए गए हैं तो ListView अपने लेआउट को अपडेट नहीं करता है।
लिस्ट व्यू के अपने कार्यान्वयन / कांटे को लिखने के दौरान मेरे दिमाग को पार कर गया है, यह कुछ ऐसा लगता है जो इतना मुश्किल नहीं होना चाहिए।
धन्यवाद!