Добавить дочерний элемент в просмотр списка с переходом общего элемента - PullRequest
0 голосов
/ 04 октября 2019

Мое приложение работает следующим образом:

  1. Фрагмент дневника (ListView) - загружается со списком продуктов с сервера
  2. Фрагмент продукта - добавление продукта в дневник (POST ксервер и откройте и обновите дневник)

Я хочу, чтобы имя продукта TextView из Product Fragment имело переход общего элемента с этим именем продукта TextView после того, как оно было добавлено в просмотр списка для достижения приятной непрерывности.

То, что я до сих пор делал, это:

При добавлении я сохраняю productID, чтобы позже я мог проверить, какой из них должен быть анимирован следующим образом:

ParentActivity.ADDED_TO_DIARY_SHARED_ELEMENT_ID = prodcutID;
((ParentActivity)getActivity()).addToDiarySharedElement(descriptiontext, ParentActivity.ADD_TO_DIARY_SHARED_ELEMENT_TRANSITON_NAME);

Затем я задерживаю анимацию при вводе фрагмента списка

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View root = inflater.inflate(R.layout.diary_fragment_redesign, container, false);

    // Postpone the shared element enter transition.
    postponeEnterTransition();
}

Затем, когда данные загружаются в адаптер, я пытаюсь найти идентификатор продукта, который был только что добавлен

  //this product was just added, assign it a shared element transition name
  if(ParentActivity.ADDED_TO_DIARY_SHARED_ELEMENT_ID == dbChild.getProductID()){
ViewCompat.setTransitionName(item_description,ParentActivity.ADD_TO_DIARY_SHARED_ELEMENT_TRANSITON_NAME);
sharedElementDrawnInterface.sharedElementDrawn(item_description);
}

Это вызываетобратный вызов для возобновления анимации

private void scheduleStartPostponedTransition(final View sharedElement, ExpandableListView listview) {
    if(listview!=null && sharedElement!=null) {
        listview.getViewTreeObserver().addOnPreDrawListener(
                new ViewTreeObserver.OnPreDrawListener() {
                    @Override
                    public boolean onPreDraw() {
                        sharedElement.getViewTreeObserver().removeOnPreDrawListener(this);
                        startPostponedEnterTransition();
                        return true;
                    }
                });

    }

}

Но анимация не происходит

Я не могу найти ничего о создании новых представлений с переходом общего элемента наИнтернет, всего два существующих представления по обе стороны анимации

Есть идеи?

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...