1

this.getListView()在从 SQLite 数据库正确填充的 ListActivity 中有这个主 ListView(使用 检索)。单击其中一个项目(条目)调用另一个活动 A2,使用startActivityForResult(). 当用户返回 ListActivity 时,我想为 SINGLE 条目设置动画。(所以我想我需要覆盖该onActivityResult()方法)

一旦窗口获得焦点并使用更新列表后,如何为单个条目设置动画notifyDataSetChanged()

我设法使用动画整个 ListView

getListView().setAnimation(anim)

并且工作正常。但是,当我这样做时:

getListView().getChildAt(position).setAnimation(anim)

什么都没发生。

编辑:这是我的 onActivityResult 代码

protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent) {

    super.onActivityResult(requestCode, resultCode, intent);

    if(resultCode==RESULT_OK && requestCode==SOME_REQUEST_CODE){

        Animation anim = new AlphaAnimation(1.0f,0.0f);  
        anim.setFillAfter(true);  
        anim.setDuration(400); 
        anim.setRepeatMode(Animation.REVERSE);
        anim.setRepeatCount(7);
        // Just for testing, I chose the first item of the ListView (position=0)
        tr_adapter.getView(0, getListView().getChildAt(0), getListView()).setAnimation(anim);

        tr_adapter.notifyDataSetChanged(); //Nothing happens

    }

}
4

1 回答 1

1

在您的表格中设置一个标志并调用notifyDataSetChanged()您的列表适配器。getView()在您的列表适配器中根据表格中的标志确定要做什么(动画或不动画)。我会发布一些示例代码,但我是移动的。

编辑


在您的onActivityResult(), 标记(带有一些值、布尔值、1/0 等)中您想要动画的数据集中的数据点。然后调用notifyDataSetChanged()适配器。假设您有一个自定义列表适配器,让您的getView()函数打开或关闭动画(或默认为关闭并在给定标志的情况下将其打开)。

public View getView (int position, View convertView, ViewGroup parent){

    // All the standard getView() stuff

    if (listitem.shouldAnimate())
        // animate
}
于 2012-12-31T02:37:26.893 回答