我在这里有演示者的自定义视图,简化版本:
public class CustomLayout extends FrameLayout implements CustomContract.CustomView {
@Inject
CustomPresenter presenter;
@Override
public void onViewAdded(View child) {
super.onViewAdded(child);
presenter.bindView(this);
}
@Override
protected void onDetachedFromWindow() {
presenter.unbindView(this);
super.onDetachedFromWindow();
}
public void setData(@NonNull MyModel myModel) {
presenter.onInit(myModel);
}
}
我想在 RecyclerView 中使用它。并在 onBindViewHolder 中设置数据:
@Override
protected void onBindViewHolder(@NonNull List<Item> items,
int position,
@NonNull RecyclerView.ViewHolder holder,
@NonNull List<Object> payloads) {
Item item = item.get(position);
CustomViewHolder viewHolder = (CustomViewHolder) holder;
viewHolder.customLayout.setData(item.data());
}
它只工作一次,在滚动我的从窗口分离的 CustomLayout 之后,当我返回它时它崩溃,因为演示者已经解除绑定并且新的还没有绑定(onViewAdded 没有被调用)。
你能帮我吗?