王学岗RxJava(十)
来源:互联网 发布:与范冰冰拍照软件 编辑:程序博客网 时间:2024/05/24 01:41
接上一篇文章,假如我们只有3个独立的AppInfo对象并且我们想把他们转化为Observable并填充到ListView的item中,我改下MainActivity类,
package com.example.acer.rxjavatest;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ListView;import rx.Observable;import rx.Observer;import rx.subjects.AsyncSubject;public class MainActivity extends AppCompatActivity { private Observable<AppInfo> observable; private AsyncSubject mMp; private ListView mListView; private AppInfoAdapter mAppInfoAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); observable=getApps(); inintView(); } public void click(View v){ observable.subscribe(new Observer<AppInfo>() { @Override public void onCompleted() { //完成后刷新UI mAppInfoAdapter.notifyDataSetChanged(); } @Override public void onError(Throwable e) { } @Override public void onNext(AppInfo appInfo) { //添加数据 mAppInfoAdapter.addAppInfo(appInfo); } }); } public void inintView() { mListView = (ListView) findViewById(R.id.lv_app_name); mAppInfoAdapter = new AppInfoAdapter(this); mListView.setAdapter(mAppInfoAdapter); } private Observable<AppInfo> getApps() { AppInfo a1=new AppInfo("张欣1",19); AppInfo a2=new AppInfo("张欣2",19); AppInfo a3=new AppInfo("张欣3",19); return Observable. just(a1,a2,a3); }}
看下运行效果
我们在看下repeat()方法:
package com.example.acer.rxjavatest;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ListView;import rx.Observable;import rx.Observer;import rx.subjects.AsyncSubject;public class MainActivity extends AppCompatActivity { private Observable<AppInfo> observable; private AsyncSubject mMp; private ListView mListView; private AppInfoAdapter mAppInfoAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); observable=getApps(); inintView(); } public void click(View v){ observable.subscribe(new Observer<AppInfo>() { @Override public void onCompleted() { //完成后刷新UI mAppInfoAdapter.notifyDataSetChanged(); } @Override public void onError(Throwable e) { } @Override public void onNext(AppInfo appInfo) { //添加数据 mAppInfoAdapter.addAppInfo(appInfo); } }); } public void inintView() { mListView = (ListView) findViewById(R.id.lv_app_name); mAppInfoAdapter = new AppInfoAdapter(this); mListView.setAdapter(mAppInfoAdapter); } private Observable<AppInfo> getApps() { AppInfo a1=new AppInfo("张欣1",19); AppInfo a2=new AppInfo("张欣2",19); AppInfo a3=new AppInfo("张欣3",19); //4是重复的次数 return Observable. just(a1,a2,a3).repeat(4); }}
defer方法一:
package com.example.acer.rxjavatest;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ListView;import rx.Observable;import rx.Observer;import rx.Subscriber;import rx.functions.Func0;import rx.subjects.AsyncSubject;public class MainActivity extends AppCompatActivity { private Observable<AppInfo> observable; private AsyncSubject mMp; private ListView mListView; private AppInfoAdapter mAppInfoAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); observable=getApps(); inintView(); } public void click(View v){ observable.subscribe(new Observer<AppInfo>() { @Override public void onCompleted() { //完成后刷新UI mAppInfoAdapter.notifyDataSetChanged(); } @Override public void onError(Throwable e) { } @Override public void onNext(AppInfo appInfo) { //添加数据 mAppInfoAdapter.addAppInfo(appInfo); } }); } public void inintView() { mListView = (ListView) findViewById(R.id.lv_app_name); mAppInfoAdapter = new AppInfoAdapter(this); mListView.setAdapter(mAppInfoAdapter); } private Observable<AppInfo> getApps() { //一旦观察者订阅,那么会立刻回调Func0的call方法,创建Observable(懒加载) return Observable.defer(new Func0<Observable<AppInfo>>() { @Override public Observable<AppInfo> call() { return Observable.create(new Observable.OnSubscribe<AppInfo>(){ @Override public void call(Subscriber<? super AppInfo> subscriber) { subscriber.onNext(new AppInfo("张欣",10)); //刷新数据 subscriber.onCompleted(); } }); } }); }}
看下运行效果
defer方法二:
package com.example.acer.rxjavatest;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ListView;import rx.Observable;import rx.Observer;import rx.functions.Func0;import rx.subjects.AsyncSubject;public class MainActivity extends AppCompatActivity { private Observable<AppInfo> observable; private AsyncSubject mMp; private ListView mListView; private AppInfoAdapter mAppInfoAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); observable = getApps(); inintView(); } public void click(View v) { observable.subscribe(new Observer<AppInfo>() { @Override public void onCompleted() { //完成后刷新UI mAppInfoAdapter.notifyDataSetChanged(); } @Override public void onError(Throwable e) { } @Override public void onNext(AppInfo appInfo) { //添加数据 mAppInfoAdapter.addAppInfo(appInfo); } }); } public void inintView() { mListView = (ListView) findViewById(R.id.lv_app_name); mAppInfoAdapter = new AppInfoAdapter(this); mListView.setAdapter(mAppInfoAdapter); } private Observable<AppInfo> getApps() { //一旦观察者订阅,那么会立刻回调Func0的call方法,创建Observable(懒加载) return Observable.defer(new Func0<Observable<AppInfo>>() { @Override public Observable<AppInfo> call() { AppInfo a1 = new AppInfo("张欣1", 19); AppInfo a2 = new AppInfo("张欣2", 19); AppInfo a3 = new AppInfo("张欣3", 19); return Observable.just(a1, a2, a3).repeat(4); } }); }}
1 0
- 王学岗RxJava(十)
- RxJava学习(十)
- (十)【续】网络框架篇(RxJava+OkHttp+Gson)
- RxJava操作符(十)自定义操作符
- 王学岗RxJava(一)
- 王学岗RxJava(二)
- 王学岗RxJava(三)
- 王学岗RxJava(四)
- 王学岗RxJava(五)
- 王学岗RxJava(九)
- 王学岗RxJava(十三)
- rxjava
- RXJava
- RXJava
- RXJava
- RxJava
- Rxjava
- RxJava
- 1019. General Palindromic Number (20)
- kibana install and start
- 多级调用栈布局
- poj 1201 Intervals
- 从开发者角度解析 Android N 新特性
- 王学岗RxJava(十)
- 三大组件间信使Intent的再学习
- erro running instant run requires 'Tools|Android|Enable ADB integration' to be enabled.错误解决办法
- LINUX下按key合并——join命令
- 浏览器缓存处理cache control
- Huffman Coding V1
- Java-Properties的简单的使用
- day11.11
- opencv圆形检测,霍夫变换不稳定