我有一個有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;
}
});
你可以添加你使用的代碼嗎? –