2012-11-27 26 views
5

Tôi đã đọc rất nhiều hướng dẫn về hoạt ảnh của các hàng, nhưng tất cả đều mô tả cách tạo hoạt ảnh cho hàng đã chọn. Tôi đã làm được. Nhưng có một vấn đề. Khi hàng bị xóa với một hoạt ảnh, tôi xóa dữ liệu khỏi bộ điều hợp và gọi notifyDataSetChanged(); Các hàng (bên dưới hàng đã loại bỏ) đi lên mà không có hoạt ảnh. Làm thế nào tôi có thể đạt được hình ảnh động của những hàng này? Tôi muốn họ trượt lên một cách trơn tru.ListView các hàng động sau khi một hàng đã chọn được xóa

+1

Tính năng này có hoạt động không? http://stackoverflow.com/a/6857762/832776 –

Trả lời

2

Tháo mục danh sách trên mục nhấp chuột, Hy vọng mã này sẽ hữu ích cho bạn

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()); 

      } 
      }); 

CẬP NHẬT

Chỉ cần ghi nhớ khuôn khổ kiến ​​trúc mà hoạt động khi notifydatasetChanged() được gọi.

  1. Phương pháp getView được gọi
  2. Trên gọi của get xem, nó sẽ tái tạo lại tất cả các hàng cho xem danh sách.

Trong trường hợp của bạn, chúng tôi phải tạo hoạt ảnh cho phương thức getView (được gọi lại trên hành động của notifydatasetchanged). Đây là giải pháp:

/** 
     * 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; 
     } 

Hãy kiểm tra xem nó có hoạt động hay không và cho tôi biết nếu nó hữu ích/hữu ích cho bạn.

+0

trong mã của bạn, bạn hiển thị cách tạo hoạt ảnh cho hàng đã chọn. Trong câu hỏi của tôi, tôi nói về hoạt hình của những hàng khác khi hàng được chọn bị xóa. Tôi muốn điều đó sau khi notifyDataSetChanged(); được gọi là các hàng đi lên với hoạt ảnh. – Alex

+1

@Alexey, Vui lòng xem câu trả lời cập nhật của tôi, Cảm ơn –

Các vấn đề liên quan