Android - 从ListView中移除项目时的动画效果

8
我有一个活动中的ListView,每个列表项都有文本和复选框。在单击复选框时,我希望将该项从ListView中删除,并添加一种动画,如向下滑动或淡出,然后进行删除。
需要帮助吗?
2个回答

7

请看我的答案

protected void removeListItem(View rowView, final int positon) {
    // TODO Auto-generated method stub

    final Animation animation = AnimationUtils.loadAnimation(rowView.getContext(), R.anim.splashfadeout);
    rowView.startAnimation(animation);
    Handler handle = new Handler();
    handle.postDelayed(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            array.remove(positon);
            adapter.notifyDataSetChanged();
            animation.cancel();
        }
    }, 1000);
}

在ListView的onItem click中调用removeListItem(View rowView, final int positon)方法。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView <? > parent, View rowView, int positon, long id) {
        // TODO Auto-generated method stub
        Toast.makeText(rowView.getContext(), "" + positon, Toast.LENGTH_LONG).show();

        removeListItem(rowView, positon);


    }
});

和 res/anim/splashfadeout.xml 相关

  <?xml version="1.0" encoding="utf-8" ?> 
  <alpha xmlns:android="http://schemas.android.com/apk/res/android" 
  android:interpolator="@android:anim/decelerate_interpolator" 
  android:zAdjustment="top" 
  android:fromAlpha="1.0" 
  android:toAlpha="0.0" 
  android:duration="2000" />

动画ListView的完整源代码在这里


这似乎运行良好,但当您开始重复删除最后一个项目时,应用程序会崩溃并显示 java.lang.IndexOutOfBoundsException。 - Johny B
@Teknogenie,我已经在我的端口检查过了,请问您能否提供您的LogCat。 - Ashish Dwivedi
我使用了你的源代码创建了一个项目,但当我反复点击最后一项时,它崩溃并出现了这个异常:http://pastie.org/8297725。 - Johny B

-1
你应该在你的适配器类中实现checkbox的onClickListener,并在那里将textview的可见性设置为GONE或Invisible,或者从列表中移除项目并调用notifyDataSetChanged()方法。

您提到要从列表中删除项目,但Shaiful想在从列表中删除任何项目时实现动画效果。 - Paresh Mayani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接