2012-11-27 23 views
5

मैंने पंक्तियों की एनीमेशन के बारे में बहुत सारे ट्यूटोरियल पढ़े हैं, लेकिन उनमें से सभी चयनित पंक्ति को एनिमेट करने का वर्णन करते हैं। मैं इसे करने में कामयाब रहा। लेकिन एक समस्या है। जब एनीमेशन के साथ पंक्ति हटा दी जाती है, तो मैं एडाप्टर से डेटा निकालता हूं और अधिसूचना कॉल करता हूंडेटासेट चेंज(); पंक्तियां (हटाई गई पंक्ति के नीचे) एनीमेशन के बिना ऊपर जाती हैं। मैं इन पंक्तियों की एनीमेशन कैसे प्राप्त कर सकता हूं? मैं उन्हें आसानी से स्लाइड करना चाहता हूं।किसी चयनित पंक्ति को हटाए जाने के बाद सूची दृश्यों को एनिमेट करें

+1

क्या यह काम करता है? http://stackoverflow.com/a/6857762/832776 –

उत्तर

2

आइटम क्लिक पर सूची आइटम निकालें, उम्मीद है कि यह कोड उपयोगी होगा के लिए आप

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
        final int position, long id) { 
       // TODO Auto-generated method stub 
       Animation anim = AnimationUtils.loadAnimation(view.getContext(), 
         android.R.anim.slide_out_right); 
       anim.setDuration(500); 
       view.startAnimation(anim); 

       new Handler().postDelayed(new Runnable() { 

        public void run() { 

         strings.remove(position); 
         mAdapter.notifyDataSetChanged(); 

        } 

       }, anim.getDuration()); 

      } 
      }); 

अद्यतन

बस ध्यान वास्तुकला ढांचे जब notifydatasetChanged() कहा जाता है काम करता है रखने के लिए।

  1. getView विधि
  2. कहा जाता है दृश्य प्राप्त की कॉल पर, यह सूची दृश्य के लिए सभी पंक्तियों को फिर से संगठित होंगे।

आपके मामले में, हमें getView विधि को एनिमेट करना होगा (जिसे अधिसूचित डेटासेट की कार्रवाई पर फिर से बुलाया जाना है)।

/** 
     * Hear strings is the data set 
     */ 
     @Override 
     public View getView(final int position, View convertView, 
       ViewGroup parent) { 
      final String str = this.strings.get(position); 
      final Holder holder; 

      if (convertView == null) { 
       convertView = mInflater.inflate(
         android.R.layout.simple_list_item_1, null); 
       convertView.setBackgroundColor(0xFF202020); 

       holder = new Holder(); 
       holder.textview = (TextView) convertView 
         .findViewById(android.R.id.text1); 
       holder.textview.setTextColor(0xFFFFFFFF); 

       convertView.setTag(holder); 
      } else { 
       holder = (Holder) convertView.getTag(); 
      } 

      holder.textview.setText(str); 

      Animation animation = null; 
      animation = new ScaleAnimation((float) 1.0, (float) 1.0, (float) 0, 
        (float) 1.0); 

      animation.setDuration(750); 
      convertView.startAnimation(animation); 
      animation = null; 

      return convertView; 
     } 

कृपया जांच लें कि यह काम करता है और मुझे पता है अगर यह उपयोगी/आप के लिए उपयोगी था: यहाँ समाधान है।

+0

अपने कोड में आप दिखाते हैं कि चयनित पंक्ति को एनिमेट कैसे करें। मेरे प्रश्न में आईएम चयनित पंक्तियों को हटाए जाने पर अन्य पंक्तियों की एनीमेशन के बारे में बात कर रहा था। मैं चाहता हूं कि अधिसूचना के बादडेटाट चेंज(); पंक्तियों को एनीमेशन के साथ जाना जाता है। – Alex

+1

@Alexey, कृपया मेरा अद्यतन उत्तर देखें, धन्यवाद –