【问题标题】:AsyncTask replacement with RXJava help needed需要 RXJava 帮助替换 AsyncTask
【发布时间】:2016-01-29 15:34:38
【问题描述】:

我是 Reactive 的新手,所以请放轻松,但我正在尝试替换当前在文本更改上运行的异步任务,以实现自动建议功能。下面是我使用 RX 的位置:

rest.getMemberList(etSearch.getText().toString())//rest interface
                    .subscribeOn(Schedulers.io())
                    .observeOn(RxAndroidSchedulers.mainThread())
                    .subscribe(new Action1<List<Member>>() {
                        @Override
                        public void call(List<Member> results) {
                            ListView ResultsListView = (ListView) findViewById(R.id.list);
                            MemberAdapter = new ResultRowAdapter(mContext, getLayoutInflater());
                            MemberAdapter.setMemberList(results);
                            ResultsListView.setAdapter(MemberAdapter);
                        }
                    };

所以,我正在寻找的是一些东西: 1)我的可观察对象是否朝着正确的方向前进? 2)我将如何处理其中的订阅部分? 3)任何其他与用 RX 替换异步任务相关的建议,因为这是我需要做的几个中的第一个。

编辑:

这是我到达的地方,感觉好像我更接近了,但我仍然需要指导。etSearch 是我的 EditText 视图

if(etSearch.length()>2){
        Observable<String> o1 = Observable.just(etSearch.getText().toString());

        o1.subscribeOn(Schedulers.io())
                .observeOn(RxAndroidSchedulers.mainThread()).subscribe(new Action1<String>() {
            @Override
            public void call(String s) {
                List<Member> MemberList =rest.getMemberList(s);
                ListView ResultsListView = (ListView) findViewById(R.id.list);
                MemberAdapter = new ResultRowAdapter(mContext, getLayoutInflater());
                MemberAdapter.setMemberList(MemberList);
                ResultsListView.setAdapter(MemberAdapter);
            }
        });}

【问题讨论】:

    标签: rx-java observable rx-android


    【解决方案1】:

    我就是这样做的:

    Observable<String> o1 = RxTextView.textChangeEvents(etSearch)
                    .map(new Func1<RxTextViewTextChangeEvent, String>() {
                             @Override
                             public String call(RxTextViewTextChangeEvent rxTextViewTextChangeEvent) {
                                 return etSearch.getText().toString();
                             }
                         }
                    );
    
                            o1.observeOn(RxAndroidSchedulers.mainThread()).filter(new Func1<String, Boolean>() {
                                @Override
                                public Boolean call(String s) {
                                    return s.length()>2;
                                }
                            }).subscribe(new Action1<String>() {
                                @Override
                                public void call(String s) {
                                    if (s.length() > 2) {
                                        List<Member> MemberList = rest.getMemberList(s);
                                        ListView ResultsListView = (ListView) findViewById(R.id.list);
                                        MemberAdapter = new ResultRowAdapter(mContext, getLayoutInflater());
                                        MemberAdapter.MemberList(MemberList);
                                        ResultsListView.setAdapter(MemberAdapter);
                                    }
                                }
                            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2017-08-31
      • 2014-03-09
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多