契约类
public interface IHomeContract {
public interface IHomeView {
//回显数据
public void showData(HomeBean homeBean);
}
//P层
public interface IHomePresenter<IHomeView> {
//绑定
public void attahView(IHomeContract.IHomeView homeView);
//解绑
public void detachView(IHomeContract.IHomeView homeView);
//数据获取
public void requestData();
}
//M层
public interface IHomeModel {
//请求数据
public void containData(CallBack callBack);
//接口回调
public interface CallBack {
public void onCallBack(HomeBean repsoneData);
}
}
}
V层
public class ShowActivity extends AppCompatActivity implements IHomeContract.IHomeView,IShoppingContract.IShoppingView {
@BindView(R.id.sRecyclerView)
RecyclerView sRecyclerView;
@BindView(R.id.recyclerView)
RecyclerView recyclerView;
private HomePresenter presenter;
Context context;
private ShoppingPresenter presenter1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
ButterKnife.bind(this);
context = ShowActivity.this;
presenter = new HomePresenter();
presenter.attahView(this);
presenter.requestData();
presenter1 = new ShoppingPresenter();
presenter1.attahView(this);
presenter1.requestData();
}
@Override
public void showData(HomeBean homeBean) {
List<HomeBean.DataBean> list = homeBean.getData();
GridLayoutManager manager = new GridLayoutManager(context, 5, GridLayoutManager.VERTICAL, false);
sRecyclerView.setLayoutManager(manager);
HomeAdapter homeAdapter = new HomeAdapter(R.layout.item, list);
sRecyclerView.setAdapter(homeAdapter);
}
@Override
public void showDatas(ShoppingBean repsoneData) {
List<ShoppingBean.DataBean> data = repsoneData.getData();
LinearLayoutManager manager = new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(manager);
ShoppingAdapter shoppingAdapter = new ShoppingAdapter(R.layout.item1,data);
recyclerView.setAdapter(shoppingAdapter);
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.detachView(this);
presenter1.detachView(this);
}
}
P层
public class HomePresenter implements IHomeContract.IHomePresenter<IHomeContract.IHomeView> {
IHomeContract.IHomeView homeView;
private SoftReference<IHomeContract.IHomeView> reference;
private HomeModel model;
@Override
public void attahView(IHomeContract.IHomeView homeView) {
this.homeView = homeView;
reference = new SoftReference<>(homeView);
model = new HomeModel();
}
@Override
public void detachView(IHomeContract.IHomeView homeView) {
reference.clear();
}
@Override
public void requestData() {
model.containData(new IHomeContract.IHomeModel.CallBack() {
@Override
public void onCallBack(HomeBean repsoneData) {
homeView.showData(repsoneData);
}
});
}
}
M层
public class HomeModel implements IHomeContract.IHomeModel {
@Override
public void containData(final CallBack callBack) {
OkGo.<String>get(Constant.HOME).execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String responseData = response.body().toString();
Gson gson = new Gson();
HomeBean homeBean = gson.fromJson(responseData, HomeBean.class);
callBack.onCallBack(homeBean);
}
});
}
}
Adapter
public class HomeAdapter extends BaseQuickAdapter<HomeBean.DataBean,BaseViewHolder> {
public HomeAdapter(int layoutResId, @Nullable List<HomeBean.DataBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, HomeBean.DataBean item) {
helper.setText(R.id.iTextView,item.getName());
Glide.with(mContext).load(item.getIcon()).into((ImageView) helper.getView(R.id.iImageView));
}
}