Skip to content

Commit fd5fd72

Browse files
author
Varun Gupta
committed
Do not create runnable to synchronously inflated views
1 parent 3fd2240 commit fd5fd72

File tree

2 files changed

+34
-22
lines changed

2 files changed

+34
-22
lines changed

epoxy-adapter/src/main/java/com/airbnb/epoxy/BaseEpoxyAdapter.java

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,12 @@ public void onBindViewHolder(EpoxyViewHolder holder, int position) {
108108

109109
@Override
110110
public void onBindViewHolder(EpoxyViewHolder holder, int position, List<Object> payloads) {
111-
executeWhenInflated(holder,
112-
() -> onBindViewHolderInternal(holder, holder.getBindingAdapterPosition(), payloads));
111+
if (holder.itemView instanceof AsyncInflatedView) {
112+
((AsyncInflatedView)holder.itemView).executeWhenInflated(() ->
113+
onBindViewHolderInternal(holder, holder.getBindingAdapterPosition(), payloads));
114+
} else {
115+
onBindViewHolderInternal(holder, holder.getBindingAdapterPosition(), payloads);
116+
}
113117
}
114118

115119
private void onBindViewHolderInternal(EpoxyViewHolder holder, int position, List<Object> payloads) {
@@ -214,19 +218,27 @@ public boolean onFailedToRecycleView(EpoxyViewHolder holder) {
214218
@CallSuper
215219
@Override
216220
public void onViewAttachedToWindow(EpoxyViewHolder holder) {
217-
executeWhenInflated(holder,
218-
() ->
219-
//noinspection unchecked,rawtypes
220-
((EpoxyModel) holder.getModel()).onViewAttachedToWindow(holder.objectToBind()));
221+
if (holder.itemView instanceof AsyncInflatedView) {
222+
((AsyncInflatedView)holder.itemView).executeWhenInflated(() ->
223+
//noinspection unchecked,rawtypes
224+
((EpoxyModel) holder.getModel()).onViewAttachedToWindow(holder.objectToBind()));
225+
} else {
226+
//noinspection unchecked,rawtypes
227+
((EpoxyModel) holder.getModel()).onViewAttachedToWindow(holder.objectToBind());
228+
}
221229
}
222230

223231
@CallSuper
224232
@Override
225233
public void onViewDetachedFromWindow(EpoxyViewHolder holder) {
226-
executeWhenInflated(holder,
227-
() ->
228-
//noinspection unchecked,rawtypes
229-
((EpoxyModel) holder.getModel()).onViewDetachedFromWindow(holder.objectToBind()));
234+
if (holder.itemView instanceof AsyncInflatedView) {
235+
((AsyncInflatedView)holder.itemView).executeWhenInflated(() ->
236+
//noinspection unchecked,rawtypes
237+
((EpoxyModel) holder.getModel()).onViewDetachedFromWindow(holder.objectToBind()));
238+
} else {
239+
//noinspection unchecked,rawtypes
240+
((EpoxyModel) holder.getModel()).onViewDetachedFromWindow(holder.objectToBind());
241+
}
230242
}
231243

232244
public void onSaveInstanceState(Bundle outState) {
@@ -348,12 +360,4 @@ public boolean isStickyHeader(int position) {
348360
}
349361

350362
//endregion
351-
352-
protected void executeWhenInflated(EpoxyViewHolder holder, Runnable runnable) {
353-
if (holder.itemView instanceof AsyncInflatedView) {
354-
((AsyncInflatedView)holder.itemView).executeWhenInflated(runnable);
355-
} else {
356-
runnable.run();
357-
}
358-
}
359363
}

epoxy-adapter/src/main/java/com/airbnb/epoxy/EpoxyControllerAdapter.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,23 @@ public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) {
125125
@Override
126126
public void onViewAttachedToWindow(@NonNull EpoxyViewHolder holder) {
127127
super.onViewAttachedToWindow(holder);
128-
executeWhenInflated(holder,
129-
() -> epoxyController.onViewAttachedToWindow(holder, holder.getModel()));
128+
if (holder.itemView instanceof AsyncInflatedView) {
129+
((AsyncInflatedView)holder.itemView).executeWhenInflated(() ->
130+
epoxyController.onViewAttachedToWindow(holder, holder.getModel()));
131+
} else {
132+
epoxyController.onViewAttachedToWindow(holder, holder.getModel());
133+
}
130134
}
131135

132136
@Override
133137
public void onViewDetachedFromWindow(@NonNull EpoxyViewHolder holder) {
134138
super.onViewDetachedFromWindow(holder);
135-
executeWhenInflated(holder,
136-
() -> epoxyController.onViewDetachedFromWindow(holder, holder.getModel()));
139+
if (holder.itemView instanceof AsyncInflatedView) {
140+
((AsyncInflatedView)holder.itemView).executeWhenInflated(() ->
141+
epoxyController.onViewDetachedFromWindow(holder, holder.getModel()));
142+
} else {
143+
epoxyController.onViewDetachedFromWindow(holder, holder.getModel());
144+
}
137145
}
138146

139147
@Override

0 commit comments

Comments
 (0)