私はリサイクルビューを保持するフラグメントを持っています。アイテムをタップすると、アクティビティへのシーン遷移のためにテキストビューが消えてしまいます。戻るボタンを押してフラグメントに戻ると、recyclerviewアイテムのテキストがフェードインするはずです。問題は、これがrecyclerviewの最初のアイテムに対してのみ機能することです。他のアイテムについては、テキストはフェードアウトしますが、フラグメントに戻ったときには表示されません。Transition ManagerがRecyclerViewで機能しないテキストフェードイン
アダプタのonBindViewHolderでtoggleVisibilityメソッドの呼び出し:
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String imageTransitionName = context.getString(R.string.timeline_item_transition_image);
Pair imagePair = new Pair<>(view.findViewById(R.id.timeline_image_framelayout), imageTransitionName);
ActivityOptionsCompat optionsCompat =
ActivityOptionsCompat.makeSceneTransitionAnimation(mUpcomingEventsFragment.getActivity(),
imagePair);
toggleVisibility(holder.itemView, false);
view.getContext().startActivity(EventDetailActivity.newIntent(context,
(Event) mTimelineItemList.get(holder.getAdapterPosition())), optionsCompat.toBundle());
}
});
とTransitionManagerののフェードと方法:
public void toggleVisibility(View view, boolean visible) {
TransitionManager.beginDelayedTransition((ViewGroup) view, new Fade());
TextView timeText = (TextView) view.findViewById(R.id.event_time);
TextView titleText = (TextView) view.findViewById(R.id.event_title);
timeText.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
titleText.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
}
は、私はフラグメントが再開したときに、toggleVisibility
メソッドを呼び出しmUpcomingEventsAdapter.toggleVisibility(mRecyclerView, true);
が、私の問題があるのです私がフラグメントに戻ったときに、recyclerviewから選択されたアイテムに可視性を正しく設定する方法がわかりません。
ありがとう、これは良い解決策のように見えます。最終的には、onBindViewHolderから位置を取得するために、アダプターにpublic getPosition()メソッドを追加します。そうすれば、私は、既にrecyclerview.getLayoutManager()。findViewByPosition(int position)を使ってViewHolderの可視性を、私がすでに持っていた方法で切り替えることができます。これが高すぎるかどうか分からないので、私はあなたの提案に何が最善のものかを見てもらうことにします。再度、感謝します! – TonyKazanjian