gpt4 book ai didi

android - Mortar:如何将 Presenter 用于列表项/适配器

转载 作者:行者123 更新时间:2023-11-29 01:35:54 29 4
gpt4 key购买 nike

我将列表与带有 ViewHolder 的自定义适配器和带有按钮的项目 View 一起使用。我想通过单击 Presenter 中的按钮来处理一些事情。

如何将 Presenter 与这些 Item View 连接起来?

最佳答案

您可以使用 rx-android通过以下方式观察AdapterView的点击事件。它很好地结合了 Mortar 中使用的 MVP 模式。首先依赖:

compile 'io.reactivex:rxjava:1.0.4'    
compile 'io.reactivex:rxandroid:0.24.0'

然后在您的 View 类中创建 observeClicks 方法。

public Observable<OnItemClickEvent> observeClicks() {
return WidgetObservable.itemClicks(adapterView);
}

订阅 Presenter 的 onLoad 中的事件:

private Subscription clicks;

@Override
protected void onLoad() {
super.onLoad();
clicks = getView().observeClicks().subscribe(
new Action1<OnItemClickEvent>() {
@Override
public void call(OnItemClickEvent event) {
// handle click events
}
}
);
}

protected void onDestroy() {
// unsubscribe from events
clicks.unsubscribe();
}

您还可以将 OnItemClickEvent 映射到 View 中的数据,并观察它而不是原始事件。

public Observable<YourDataClass> observeClicks() {
return WidgetObservable.itemClicks(adapterView).
map(new Func1<OnItemClickEvent, YourDataClass>() {
@Override
public YourDataClass call(OnItemClickEvent onItemClickEvent) {
YourDataClass item = adapter.getItem(onItemClickEvent.position());
return item;
}
});
}

希望这会派上用场。至少我是这样做的,但肯定不是唯一的解决方案。

关于android - Mortar:如何将 Presenter 用于列表项/适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28084367/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com