私は3種類のitemviewtypeを持つリサイクラーアダプターを持っています。 No.1タイプのビューには、ホルダーインスタンスチェックの下で書いたビューを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(FeatureNotificationViewHolder instanceofのホルダー){ 最終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;
}
});
使用しているコードを追加できますか? –