由于我一直在Android上开发,我发现没有相应的功能可以在TableView中动画单独的行。在我的适配器上调用
notifyDataSetChanged()
会使ListView立即更新其内容以显示新信息。我想在数据更改时显示一个简单的行推入或滑出的动画,但我找不到任何文档化的方法来实现这一点。看起来LayoutAnimationController可能是解决问题的关键,但当我在ListView上设置一个LayoutAnimationController(类似于ApiDemo的LayoutAnimation2)并在列表已显示后从我的适配器中删除元素时,这些元素立即消失而没有得到动画处理。我还尝试了像以下代码一样的方法来动画删除单个项目:
@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
Animation animation = new ScaleAnimation(1, 1, 1, 0);
animation.setDuration(100);
getListView().getChildAt(position).startAnimation(animation);
l.postDelayed(new Runnable() {
public void run() {
mStringList.remove(position);
mAdapter.notifyDataSetChanged();
}
}, 100);
}
然而,动画行周围的行在调用notifyDataSetChanged()
之前不会改变位置,直到它们跳到新位置时才会更新。看起来ListView在元素放置后没有更新其布局。
虽然我也曾考虑过编写自己的ListView实现/分支,但这似乎不应该那么困难。
谢谢!