总的效果图:
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’
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
②在主页面