android - 从 Observable 获取元素的索引

标签 android rx-java frp rx-android

我开始学习 RxJava。我有一个 View 数组,我想使用 ViewObservable.clicks() 为每个 View 设置一个 OnClickListenerOnClickListener 的实现将只调用一个方法,该方法取决于 View 在数组中的位置(例如:populate(viewPositionInTheArray))。

一个必要的解决方案是这个:

for (int i = 0; i < views.length; i++) {
    final int finalI = i;
    view[i].setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            populate(finalI);
        }
    });
}

为了使用 RxJava 做到这一点,我想我需要做一些流链接。但是,我不知道我必须以优雅的 FRP 方式使用哪些功能。有什么建议吗?

谢谢

最佳答案

这是我的尝试。当我需要通过可观察的变化来维护索引时,我通常使用范围运算符

 Observable.range(0,views.length)
               .subscribe(new Action1<Integer>() {
            @Override
            public void call(Integer integer) {
                views[index].setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        populate(index);
                    }
                });
            }
        });

关于android - 从 Observable 获取元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30835677/

相关文章:

android - 获取错误 org.gradle.api.UnknownTaskException : Task with path 'testDebug' not found in project

android - 申请的进程中没有加入对应的组ID

android - 如何在android中获取目录设备中的文件?

java - RxJava : combining multiple streams of objects based on a certain condition

android - 如何在 Android RxJava Observable 中顺序运行 2 个查询?

f# - FRP 中的行为和事件有什么区别?

android - 如何在 Android 中的多个 Activity 之间切换

android - 如何为单元测试选择正确的调度程序

ios - 具有输入输出的 rxswift viewmodel

haskell - 在回合制 ascii 游戏中使用 FRP(尤其是响应式(Reactive)香蕉)是否有意义?