场景转换返回错误的recyclerview项目

问题描述 投票:0回答:1

我有一个充满物品的recyclerview。我使用firestore作为数据存储区。以下是我在适配器中onBindViewHolder期间设置转换名称的方法。

expressionView.setTransitionName(MainActivity.FIELD_EXPRESSION + snapshot.getId());
        definitionView.setTransitionName(MainActivity.FIELD_DEFINITION + snapshot.getId());
        buttonsView.setTransitionName("buttons" + snapshot.getId());

这就是我在片段中调用详细活动的方式:

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(getActivity(),
            Pair.create(expressionView, ViewCompat.getTransitionName(expressionView)),
            Pair.create(definitionView, ViewCompat.getTransitionName(definitionView)),
            Pair.create(buttonsView, ViewCompat.getTransitionName(buttonsView)));

    Log.d(TAG, "transitionName: "+ ViewCompat.getTransitionName(expressionView));
    Log.d(TAG, "transitionName: "+ ViewCompat.getTransitionName(definitionView));
    Log.d(TAG, "transitionName: "+ ViewCompat.getTransitionName(buttonsView));

    /*ActivityOptions options = ActivityOptions.makeCustomAnimation(getActivity(), R.anim
            .activity_in, R.anim.activity_out);*/

    startActivity(intent, options.toBundle());

在详细活动中,我将转换名称设置如下:

mExpressionView.setTransitionName(MainActivity.FIELD_EXPRESSION + mEntryId);
    mDefinitionView.setTransitionName(MainActivity.FIELD_DEFINITION + mEntryId);
    mButtonsView.setTransitionName("buttons" + mEntryId);

从recyclerview项目到详细活动的过渡工作正常。但是当我单击后退按钮时,转换不会返回到单击的项目。事实上,不止一个项目是动画的。我也以我的风格启用了共享元素转换

android android-recyclerview android-transitions
1个回答
0
投票

打电话给mAdapter.setHasStableIds(true);解决了这个问题

© www.soinside.com 2019 - 2024. All rights reserved.