网络获取数据ok+泛型+绑定解绑+观察者+被观察者

news/2024/10/17 16:36:06/

//首先在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);}});}}








http://www.ppmy.cn/news/703196.html

相关文章

vue_前后端项目分离操作-查询操作

前后端项目分离操作 使用搭建好的vue项目和ssm项目 功能需求分析 后端 查询 持久层 ​ 发送两条sql查询总条数和结果集(limit容易写死) ​ 使用分页插件pageHelper解决分页的功能 ​ 在pom.xml中添加依赖 <!--pagehelper--><dependency><groupId>com…

[深度学习]数学基础之线性代数

[数学基础]线性代数 学习内容源于深度之眼公众号的花书训练营课程 1. 从特殊矩阵的对角化到矩阵压缩 假设 B B B 是一个方阵&#xff0c;如果存在一个单位正交矩阵 P P P 使得 A P B P − 1 A PBP^{-1} APBP−1 &#xff0c;其中 A A A 是一个对角阵&#xff0c;则称 A…

【IPF2020】浪潮集团副总裁、渠道管理部总经理王峰:赋能智慧生态 筑基新基建

目前关键计算的传统数据中心和科学计算的超算中心已经发展多年&#xff0c;而未来作为核心生产力的智慧计算的基础设施就是智算中心&#xff0c;这也是国家提出的新基建最重要的基础设施之一。 智慧生态作为智算中心建设的核心力量&#xff0c;浪潮将继续强化智慧生态的基础策…

矩阵奇异值分解在MIMO中的应用

目录 矩阵奇异值分解在MIMO中的应用 矩阵奇异值分解在MIMO中的应用 MIMO的传输矩阵 H \mathbf{H} H可以通过奇异值分解为 H P Σ Q T \mathbf{H} P\Sigma Q^T HPΣQT 那么接受端得到的信息可以表示为 Y P Σ Q T X n Y P\Sigma Q^TX n YPΣQTXn 令 X Q X ′ X QX XQX′…

Abaqus_Python中的数据类型[abaqus二次开发]

1&#xff0c;符号常值&#xff08;SymbolicConstants&#xff09; 在进行编程过程中有很多函数需要默认的参数&#xff0c;比如弹性材料对象的各项同性&#xff0c;正交&#xff08;ISOTROPIC,ORTHOTROPIC&#xff09;等性质均为其材料的默认参数种类。 例如下面程序中的[ty…

掉期交易与利率平价

掉期交易与利率平价 – 潘登同学的期汇操作笔记 文章目录 掉期交易与利率平价 -- 潘登同学的期汇操作笔记 掉期交易进行掉期交易的目的即期对远期的掉期交易即期对次日(Spot/Next)即期对一周(Spot/Next)即期对整数月 即期对即期的掉期交易远期对远期的掉期交易基于掉期率的计算…

二层(链路层)数据包发送过程分析

说明&#xff1a;本系列博文所涉及内核版本为2.6.32 当上层准备好一个包之后&#xff0c;交给链路层&#xff0c;链路层数据包发送主要通过dev_queue_xmit函数处理。数据包的发送可分为两种&#xff0c;一种是正常的传输流程&#xff0c;即通过网卡驱动&#xff0c;另一种是通过…

俯卧撑你真做标准了嘛?敢不敢用Python来测试一下 (¬‿¬)

前言&#xff1a; 在此次冬奥会上&#xff0c;谷爱凌“一飞冲天”&#xff0c;苏翊鸣“一鸣惊人”&#xff0c;短道速滑梦之队“一往无前”……运动健儿们挑战极限、攀登顶峰的精神无一不让无数观众热血澎湃&#xff01; 这些燃爆冬奥赛场的运动健儿们&#xff0c;洋溢着蓬勃…