首页 > 解决方案 > 场景过渡返回错误的recyclerview item

问题描述

我有一个装满物品的回收站视图。我使用 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 项目到详细信息活动的转换工作正常。但是当我点击后退按钮时,转换不会回到点击的项目。事实上,不止一项是动画的。我还在我的风格中启用了共享元素转换

标签: androidandroid-recyclerviewandroid-transitions

解决方案


打电话mAdapter.setHasStableIds(true);解决问题


推荐阅读