gpt4 book ai didi

android - 删除选定行后的 ListView 动画行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:25 26 4
gpt4 key购买 nike

我已经阅读了很多关于行动画的教程,但它们都描述了如何为选定的行设置动画。我设法做到了。但是有一个问题。当使用动画删除行时,我从适配器中删除数据并调用 notifyDataSetChanged();行(在删除的行下方)在没有动画的情况下上升。我怎样才能实现这些行的动画?我希望它们顺利向上滑动。

最佳答案

删除项目点击的列表项目,希望这段代码对你有所帮助

 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. 在调用 get view 时,它将重建 ListView 的所有行。

在您的情况下,我们必须为 getView 方法设置动画(将在 notifydatasetchanged 的​​操作中再次调用)。这是解决方案:

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

请检查它是否有效,如果对您有用/有帮助,请告诉我。

关于android - 删除选定行后的 ListView 动画行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com