网络获取数据ok+泛型+绑定解绑+观察者+被观察者
来源:互联网 发布:魔兽世界幻化软件 编辑:程序博客网 时间:2024/05/29 14:00
//首先在P层首先接口
//创建P层的接口public interface Ipp<T> { //创建两个方法 1.绑定的方法 有参view 2.解除绑定的方法 public void attch(T view); public void detch();}
//P层首先接口里面的方法 被观察者+观察者的使用
public class Presertion implements Ipp<Ivv>{ //1.上下文 2.M层的类Model 3.V层的接口 Context context; Model mm; //弱引用 WeakReference<Ivv> weakReference ; //有参构造 上下文 V层的接口 public Presertion(Context context, Ivv vv) { this.context = context; //接口的方法 attch(vv); //实例化M层的 Model 类 mm=new Model(); } //创建方法 public void getOkhttp(){ //RXjava //被观察者 Observable<Object> objectObservable=Observable.create(new Observable.OnSubscribe<Object>() { @Override public void call(final Subscriber<? super Object> subscriber) { //Model 调用shuju方法 网络获取 gson解析 mm.shuju(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { //gson解析 Gson gson=new Gson(); String www=response.body().string(); Bean bean=gson.fromJson(www,Bean.class); //调用观察者的方法 subscriber.onNext(bean); } }); } }); //观察者 objectObservable.subscribe(new Observer<Object>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Object o) { //观察者的展示方法 weakReference.get().zhanshi((Bean) o); } }); }//重写的绑定方法 @Override public void attch(Ivv view) { weakReference=new WeakReference(view); } //重写的解除绑定的方法 @Override public void detch() { Log.i("sss","sss"); weakReference.clear(); }}
//创建BaseActivity的抽象类继承接口+泛型
public abstract class BaseActivity<T extends Ipp> extends AppCompatActivity { //调用属性 T presenter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //定义抽象方法 createpresenter(); } //创建方法 public abstract void createpresenter(); //解除绑定 @Override protected void onDestroy() { super.onDestroy(); presenter.detch(); }}
//在Activity的使用
public class MainActivity extends BaseActivity<Presertion> implements Ivv{ // 1.控件 2.P层的类 3.适配器 RecyclerView rv; Myadapter madapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Fresco的初始化 Fresco.initialize(this); setContentView(R.layout.activity_main); //获取id rv= (RecyclerView) findViewById(R.id.rv); //自创的方法 initData(); //调用网络获取方法 presenter.getOkhttp(); } @Override public void createpresenter() { presenter=new Presertion(this,this); } //创建的rv的方法 private void initData() { //线性管理器 LinearLayoutManager managre=new LinearLayoutManager(this); rv.setLayoutManager(managre); rv.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL)); } @Override public void zhanshi(Bean bean) { //实例化适配器传参 madapter=new Myadapter(this,bean); runOnUiThread(new Runnable() { @Override public void run() { //赋值 rv.setAdapter(madapter); } }); }}
阅读全文
0 0
- 网络获取数据ok+泛型+绑定解绑+观察者+被观察者
- Fragment+ok+Fresco+泛型+解绑+软引用
- 观察者
- 观察者
- 观察者
- 观察者
- 观察者
- 观察者
- 观察者
- 观察者
- Android 观察者与被观察者
- 网络编程--观察者模式
- ok请求网络数据
- RxJava结合Retrofit实现的网络请求(Observable被观察者和 Subscriber观察者)
- 观察者与被观察者模式实现模型
- ExtJS——观察者及被观察者
- Android 简单的观察者与被观察者
- 安卓,Rxjava观察者被观察者操作
- LuoguP1941[NOIP2014] 飞扬的小鸟 解题报告【背包型DP】
- Spring(9)IOC和DI的区别
- Linux一个坑-安装pip更新源
- Java构造方法
- 【Angular-CLI】首页说明
- 网络获取数据ok+泛型+绑定解绑+观察者+被观察者
- pthread_mutex_t死锁
- 《Python学习手册》学习笔记(20)之第20章迭代和解析,第二部分(关键词:编程语言/Python/迭代/解析)
- 前端html学习记录
- Caffe normalization层实现
- BZOJ 1103
- [bzoj2563][贪心]阿狸和桃子的游戏
- input type file onchange上传文件的过程中,遇到同一个文件二次上传无效的问题。
- poj 3422 Kaka's Matrix Travels(最小费用流)