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

时间:2019-04-20 16:23:25

标签: android android-recyclerview android-transitions

我有一个充满物品的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项目到详细活动的过渡效果很好。但是,当我单击“后退”按钮时,过渡不会返回到所单击的项目。实际上,不止一项是动画。 我还启用了我的样式中的共享元素过渡

1 个答案:

答案 0 :(得分:0)

致电mAdapter.setHasStableIds(true);解决了问题