1

我在这里有演示者的自定义视图,简化版本:

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 没有被调用)。

你能帮我吗?

4

0 回答 0