Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 使用ViewHolder模式的适配器中的动画大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的适配器中使用动画时,我有问题. @H_673_2@@Override public View getView(int position,View convertView,ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = LayoutInflater.from(context); convertView = inflater.inflate(resource,parent,falsE); holder = new ViewHolder(); holder.newRoomView = (TextView) convertView.findViewById(R.id.newRoom); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } Room item = items.get(position); // animate new rooms if (item.isNewRoom()) { AlphaAnimation alphaAnim = new AlphaAnimation(1.0f,0.0f); alphaAnim.setDuration(1500); alphaAnim.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { holder.newRoomView.setVisibility(View.INVISIBLE); } @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} }); holder.newRoomView.startAnimation(alphaAnim); } // ... return convertView; }

在适配器外面添加一个新房间并调用notifyDataSetChanged新房间是正确的动画,但是当onAnimationEnd被调用时,另一个(不是新的房间)被隐藏.

有什么办法可以隐藏正确的房间吗?

解决方法

由于您尚未在getView()方法中声明持有人变量,我只能假设您已将其声明为类中的实例变量.这是你的问题.在动画完成时,变量持有人持有对完全不同的项目的引用.

您需要使用在getView()方法中声明为final的局部变量.我不知道在getView()方法之外是否需要这个持有者变量,但如果你这样做,你可以这样做:

@H_673_2@// animate new rooms if (item.isNewRoom()) { final ViewHolder holderCopy = holder; // make a copy AlphaAnimation alphaAnim = new AlphaAnimation(1.0f,0.0f); alphaAnim.setDuration(1500); alphaAnim.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { holderCopy.newRoomView.setVisibility(View.INVISIBLE); } @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} }); holder.newRoomView.startAnimation(alphaAnim); }

这当然是不行的,如果动画需要这么长的时间,视图已被回收利用在此期间.

大佬总结

以上是大佬教程为你收集整理的android – 使用ViewHolder模式的适配器中的动画全部内容,希望文章能够帮你解决android – 使用ViewHolder模式的适配器中的动画所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。