【问题标题】:Returning an ArrayList of an object in rxAndroid在 rxAndroid 中返回对象的 ArrayList
【发布时间】:2015-12-22 17:14:25
【问题描述】:

我想定期运行一个方法,以便它返回一个自定义对象的ArrayList。这是我的代码sn-p,

    subscribe = Observable.interval(5, TimeUnit.SECONDS)
            .map(new Func1<Long, ArrayList<Item>>() {

                @Override
                public ArrayList<Item> call(Long aLong) {
                    return new ArrayList<Item>(aLong.intValue());
                }
            });

但是,这会产生错误

map(rx.functions.Func1&lt;? super T, ? extends R&gt;)in Observable 不能应用于(anonymous rx.functions.Func1&lt;java.lang.Long, java.util.ArrayList&lt;com.example.Item&gt;&gt;)

当返回值为ArrayList&lt;String&gt; 时,这可以正常工作。我不明白这里有什么问题。不允许自定义对象吗?

【问题讨论】:

  • 您的代码看起来不错。订阅变量的类型是什么?
  • @jimmy0251 rx.Subscription
  • @jimmy0251 我知道问题出在哪里,除非你做一个完整的.subsribe(),否则你没有Subscription 对象。

标签: java android reactive-programming rx-java rx-android


【解决方案1】:

你不是在地图上订阅的,你是在订阅后得到的。这是演示它的示例代码。

  Observable<ArrayList<Item>> observable = Observable.interval(5, TimeUnit.SECONDS)
            .map(new Func1<Long, ArrayList<Item>>() {

                @Override
                public ArrayList<Item> call(Long aLong) {
                    return new ArrayList<Item>(aLong.intValue());
                }
            });
    Subscription subscription = observable.subscribe(new Action1<ArrayList<Item>>() {
        @Override
        public void call(ArrayList<Item> items) {
            //Do something with list items here
        }
    });

【讨论】:

    猜你喜欢
    • 2014-04-03
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2015-11-15
    • 2020-07-03
    • 2015-07-12
    相关资源
    最近更新 更多