RecyclerView+XRecyclerView

总的效果图:
在这里插入图片描述
1.MVP框架自己搭建除了传路径外传一个type标记(int type);工具类用OkHttp:
在这里插入图片描述
**2.**Model层的ModelImpe:ModelImpe(0是RecyclerView,1是XRecyclerView)

在这里插入图片描述

        }

    }
};
//下边的XRecycleView
@Override
public void getData(String url, MyCallBack callBack) {
    this.callBack=callBack;

    OkUtils.getInstance().getAsync(url, new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {

        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String s = response.body().string();
            handler.sendMessage(handler.obtainMessage(0,s));
        }
    });
}
//上面的网格RecycleView
@Override
public void getDdata(String durl, MyCallBack callBack) {
    this.callBack=callBack;
    OkUtils.getInstance().getAsync(durl, new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {

        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String string = response.body().string();
            handler.sendMessage(handler.obtainMessage(1,string));
        }
    });

}

}
*
*
**3.总的布局:
1).RecyclerView:依赖:implementation ‘com.android.support:recyclerview-v7:28.0.0’
2).XRecyclerView:
-----①通过File—>new—>Import Modul 导依赖,添加到项目里

**** —②在根build里添加两个依赖
classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0’
classpath ‘com.github.dcendents:android-maven-gradle-plugin:1.4.1’
在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>

LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android
xmlns:app=“http://schemas.android.com/apk/res-auto
xmlns:tools=“http://schemas.android.com/tools
android:layout_width=“match_parent”
android:orientation=“vertical”
android:layout_height=“match_parent”
tools:context=".MainActivity">

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="2"
    android:id="@+id/Recy"
    ></android.support.v7.widget.RecyclerView>

<com.jcodecraeer.xrecyclerview.XRecyclerView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="3"
    android:id="@+id/XRrcy"
    ></com.jcodecraeer.xrecyclerview.XRecyclerView>

/LinearLayout>

4.MainActivity:

public class MainActivity extends BaseActivity implements IView {

private Context context = this;
private List<MyData.DataBean> mlist = new ArrayList<>();
private List<MyDdata.DataBean> list = new ArrayList<>();
private String mUrl = "http://www.wanandroid.com/tools/mockapi/6523/restaurants_offset_0_limit_4";
private String dUrl = "http://www.xieast.com/api/news/news.php?page=";
private XRecyclerView XRrcy;
private XRecyAdapter adapter;
private PresenterImpe presenterImpe;
private RecyAdapter recyAdapter;
private RecyclerView Recy;

@Override
protected int getLayout() {
    return R.layout.activity_main;
}

@Override
protected void initViews() {
    XRrcy = findViewById(R.id.XRrcy);
    Recy=findViewById(R.id.Recy);
    //布局样式---XRecyclerView
    LinearLayoutManager manager = new LinearLayoutManager(this);
    XRrcy.setLayoutManager(manager);
    XRrcy.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
    XRrcy.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
    adapter = new XRecyAdapter(context, mlist);
    XRrcy.setAdapter(adapter);
    //横拉网格----RecyclerView
    GridLayoutManager manager1 =new GridLayoutManager(this,2,GridLayoutManager.HORIZONTAL,false);
    Recy.setLayoutManager(manager1);
    recyAdapter = new RecyAdapter(this, list);
    Recy.setAdapter(recyAdapter);
}

@Override
protected void setOnClick() {

}

@Override
protected void pageLogic() {
    presenterImpe = new PresenterImpe(this);
    presenterImpe.getData(mUrl);
    presenterImpe.getDdata(dUrl);
}


@Override
public void success(Object data, int type) {
    switch (type){
        case 0:
            mlist.addAll((Collection<? extends MyData.DataBean>) data);
            adapter.notifyDataSetChanged();
            break;
        case 1:
            list.addAll((Collection<? extends MyDdata.DataBean>) data);
            recyAdapter.notifyDataSetChanged();
            break;
    }
}

@Override
public void error(String error) {

}

}

考点:
防止内存泄露

①在P层 PresenterImpe
在这里插入图片描述
②在主页面
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43603312/article/details/85115930