अपडेट नहीं कर रहा है मेरे पास एक कस्टम एडाप्टर के साथ एक सूची दृश्य है, जो डेटाबेस से जानकारी प्रदर्शित करता है। जब मैं ऐप शुरू करता हूं, तो एडाप्टर को दिया गया डेटा डेटाबेस से पढ़ा जाता है, जिसे सूचीव्यू से जोड़ा जाता है। एक लेआउटएनिमेशन कंट्रोलर सूची दृश्य पर चलाया जाता है, सामग्री को आसानी से प्रदर्शित करता है।एंड्रॉइड लिस्टव्यू
this._lvList = (ListView)_v.findViewById(R.id.lvList);
this._lvList.setAdapter(new TableAdapter(getActivity(),R.layout.tablerow,Category.getCategories()));
LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(getActivity(), R.anim.slide_in_left));
lac.setDelay(0.2f);
this._lvList.setLayoutAnimation(lac);
this._lvList.startLayoutAnimation();
कोई समस्या नहीं है।
अब जब मैं ListView की किसी भी प्रविष्टि पर क्लिक करता हूं, तो जिन प्रविष्टियों को क्लिक नहीं किया गया था, गायब हो जाते हैं, क्लिक की गई प्रविष्टि सूची में एकमात्र प्रविष्टि बन जाती है और उम्मीद के अनुसार शीर्ष पर प्रदर्शित होती है।
View v;
for(int i = 0;i<_lvList.getChildCount();i++) {
v = this._lvList.getChildAt(i);
if(v!=clickedView) {
Animation animSlideOut = AnimationUtils.loadAnimation(getActivity(), i%2==0?R.anim.slide_out_left:R.anim.slide_out_right);
animSlideOut.setStartOffset(i*50);
// some more stuff
}
v.startAnimation(animSlideOut);
}
यह रूप में अच्छी तरह से काम करता है, लेकिन अब समस्या है, अगर मुझे लगता है कि एक सूची प्रविष्टि पर फिर से क्लिक करें, मैं सूची फिर से आबाद करना चाहते हैं, सभी आइटम फिर से प्रदर्शित।
मैंने सोचा कि मैं शुरुआत (पहला स्निपेट) से कोड का उपयोग कर सकता हूं, क्योंकि यह ऐप शुरू करते समय ठीक काम करता है, लेकिन ... इस बार ... ऐसा नहीं होता है। कोई एनीमेशन नहीं हो रहा है। कारण यह है कि, मेरी सूची दृश्य में एनिमेट करने के लिए कोई विचार नहीं है (पिछले चरण में से एक को छोड़कर)।
इसके बजाय एक नया TableAdapter मैं पहले से ही यह स्पष्ट करने की कोशिश की बनाने की,,, यह नया, notifyDataSetChanged() ... कोई फायदा नहीं बुलाया भरने
_lvList.getChildCount();
चित्र रिटर्न 1 दृश्य के रूप में, जबकि एडाप्टर सभी 18 रखती है प्रविष्टियों। मैं भी
requestLayout();
forceLayout();
invalidate();
invalidateViews();
की कोशिश की एनीमेशन से पहले अपने बच्चे को देखा गया उत्पन्न करने के लिए ListView मजबूर करने के लिए है, लेकिन यह काम नहीं कर रहा। तो लिस्ट व्यू पर एटीएम तुरंत दिखाई देता है, कुछ समय बाद लेआउट एनीमेशन पर कॉल करने के बाद।
सारांश: मेरी सूची दृश्य में लेआउट एनीमेशन की शुरुआत से पहले कोई बच्चा दृश्य नहीं है, मैं इसे उत्पन्न करने के लिए इसे कैसे मजबूर कर सकता हूं? अग्रिम :) में
Thx
क्या आपने इस मुद्दे को हल किया है? – dexxtr
@dexxtr क्षमा करें, यह बहुत समय पहले था, लेकिन अंत में मैं एक अलग एनीमेशन के साथ बस गया, क्योंकि कोड अपेक्षित काम नहीं कर रहा था ... –
मैंने पहले से ही तय कर लिया है :) समस्या गलत संदर्भ में थी, जिसमें एक अन्य स्क्रीन – dexxtr