我有一个有3个itemviewtypes的回收站适配器。第一种类型的视图有一个初始动画来显示我在OnBindView
的持有者实例检查下写的视图。它工作正常。但是当其他视图类型有任何更改时,将调用notifydatasetchanged()
,并重新设置适配器,使动画重新开始。 我试图把动画的标志放在第一次动画的地方。有没有更聪明的方法来做到这一点?在调用notifydatasetchanged()后保持Recyclerview中视图的状态不变()
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int
viewType) {
mSharedPreferencesManager.setVersionNewFeatureCheck(BuildConfig.VERSION_NAME);
Logger.i(TAG, "onCreateViewHolder, " + viewType);
if (viewType == TYPE_HEADER) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.converation_header_row, parent, false);
return new HeaderViewHolder(v);
} else if(viewType == TYPE_ANNOUNCEMENT) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_new_feature_notification, parent, false);
return new FeatureNotificationViewHolder(v);
}
else{
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.conversation_row, parent, false);
return new ConversationRowViewHolder(v);
}
}
F(的instanceof FeatureNotificationViewHolder持有者){ 最终FeatureNotificationViewHolder featureNotificationViewHolder =(FeatureNotificationViewHolder)保持器;
featureNotificationViewHolder.chatNewFeatureNotif.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
final int height = featureNotificationViewHolder.chatNewFeatureNotif.getMeasuredHeight();
featureNotificationViewHolder.chatNewFeatureNotif.setVisibility(View.GONE);
featureNotificationViewHolder.chatNewFeatureNotif.getViewTreeObserver().removeOnPreDrawListener(this);
mOverflowAnimations.showView(featureNotificationViewHolder.chatNewFeatureNotif, height, 6);
return false;
}
});
你可以添加你使用的代码吗? –