Android 在onCreateViewHolder上充气时获取空布局

Android 在onCreateViewHolder上充气时获取空布局,android,android-layout,android-recyclerview,android-viewholder,Android,Android Layout,Android Recyclerview,Android Viewholder,我有一个RecycleView,它的项目在单击时进行缩放和转换动画。在onBindViewHolder()中,我有时会在后期动画状态下获得视图,我试图通过保存原始布局位置和大小并将其设置为viewHolder中的当前布局来撤消动画所做的缩放和转换: private void returnToOriginalSate(ItemViewHolder holder) { View groupLogo1 = holder.parent.findViewById(R.id.group_logo1)

我有一个
RecycleView
,它的项目在单击时进行缩放和转换动画。在
onBindViewHolder()
中,我有时会在后期动画状态下获得
视图
,我试图通过保存原始布局位置和大小并将其设置为viewHolder中的当前布局来撤消动画所做的缩放和转换:

private void returnToOriginalSate(ItemViewHolder holder) {
    View groupLogo1 = holder.parent.findViewById(R.id.group_logo1);
    View groupLogo2 = holder.parent.findViewById(R.id.group_logo2);
    View leagueLogo = holder.parent.findViewById(R.id.league_logo_parent);

    groupLogo1.setX(originalLayout.findViewById(R.id.group_logo1).getX());
    groupLogo1.setY(originalLayout.findViewById(R.id.group_logo1).getY());
    groupLogo1.setLayoutParams(originalLayout.findViewById(R.id.group_logo1).getLayoutParams());

    groupLogo2.setX(originalLayout.findViewById(R.id.group_logo2).getX());
    groupLogo2.setY(originalLayout.findViewById(R.id.group_logo2).getY());
    groupLogo2.setLayoutParams(originalLayout.findViewById(R.id.group_logo2).getLayoutParams());

    leagueLogo.setX(originalLayout.findViewById(R.id.league_logo_parent).getX());
    leagueLogo.setY(originalLayout.findViewById(R.id.league_logo_parent).getY());
    leagueLogo.setLayoutParams(originalLayout.findViewById(R.id.league_logo_parent).getLayoutParams());
}
要获取
originalLayout
我正在将其膨胀并保存在
onCreateViewHolder中

@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    ItemViewHolder viewHolder = new ItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_in_feed, parent, false));
    if(originalLayout == null){
        originalLayout = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_in_feed, parent, false);

    }
    return viewHolder;
}
问题是我得到了奇怪的原始AllYout值,例如,此布局中的ImageView具有布局参数:-1和x,y位置:(0,0)

为什么呢?我怎样才能得到真正的原创作品?有没有更好的方法

编辑:当我重置回收视图的位置时,这是onbindview

 @Override
public void onBindViewHolder(final ItemViewHolder holder, final int position) {
         if(this view is recycled and should be reset){
             returnToOriginalState(holder);

    }
}

关于我们在评论中的谈话,请在动画完成后将reverse()应用于holders视图的animator:

animator.addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        animation.removeListener(this);
        animation.setDuration(0);
        ((ValueAnimator) animation).reverse();
    }
});

设置数据列表后,将调用onCreateViewHolder一次。可能您应该将其充气一次,然后使用viewHolder的视图在其上应用动画。OriginallalYout是指在不改变过渡和缩放(onCreateViewHolder中的原始布局(项目_在_提要中)和原始视图位置的情况下,recycleView中项目的显示方式。Ok。我得到了它。您应该添加holder.mView.setOnClickListener(…),并将holder视图传递给该方法,并对其真正应用animator/动画。你需要什么样的动画?我正在使用ObjectAminor以onClick方法制作动画,这意味着转换和缩放确实发生了变化,我正在尝试通过调用returnToOriginalState()来反转动画,这将导致视图动画化,然后反转动画到原始位置。我不希望这样,我希望将视图放置在onBindViewHolder中的原始位置。是否正在更改项目的位置?