Model
interface CallBackListener{
void success(int type,String data);
void fail(int type,String error);
}
// 展示购物车
void doShopCar(int type,String url,CallBackListener listener);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class MainModelIml implements MainModel {
@Override
public void doShopCar(final int type, String url, final CallBackListener listener) {
new OkHttpUtils().get(url).result(new OkHttpUtils.HttpListener() {
@Override
public void success(String data) {
listener.success(type,data);
}
@Override
public void fail(String error) {
listener.fail(type,error);
}
});
}
}
Presenter
void doShopCar(int type,String url);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// 构造
private MainModel mainModel;
private MainView mainView;
public MainPresenterIml(MainModel mainModel, MainView mainView) {
this.mainModel = mainModel;
this.mainView = mainView;
}
@Override
public void doShopCar(int type, String url) {
mainModel.doShopCar(type,url,this);
}
@Override
public void success(int type, String data) {
mainView.success(type,data);
}
@Override
public void fail(int type, String error) {
mainView.fail(type,error);
}
//销毁,记得页面调用
public void destory(){
if (mainModel!=null){
mainModel=null;
}
if (mainView!=null){
mainView=null;
}
System.gc();
}
Fragment
public class HomeFragment extends Fragment implements MainView {
private MainPresenterIml mainPresenterIml;
private RecyclerView mRecycler;
private TextView mTvTitle,mTvMoney;
private ShopCarAdapter shopCarAdapter;
private List<ShopBean.DataBean> datas;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_home,container,false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// 寻找控件
mRecycler = (RecyclerView)view.findViewById(R.id.recycler);
mTvTitle = (TextView)view.findViewById(R.id.tv_allprice);
mTvMoney = (TextView)view.findViewById(R.id.tv_money);
// 设置适配器
shopCarAdapter=new ShopCarAdapter(getContext());
// 布局管理器
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getContext());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecycler.setLayoutManager(linearLayoutManager);
mRecycler.setAdapter(shopCarAdapter);
// 获取中介,然后传递接口
mainPresenterIml=new MainPresenterIml(new MainModelIml(),this);
mainPresenterIml.doShopCar(0,"http://172.17.8.100/ks/product/getCarts?uid=51");
}
// 内存泄漏
@Override
public void onDestroy() {
super.onDestroy();
mainPresenterIml.destory();
}
// 成功
@Override
public void success(int type, String data) {
// 解析接口,获取数据
ShopBean bean = new Gson().fromJson(data, ShopBean.class);
datas = bean.getData();
// 删除第0个,为空
datas.remove(0);
// 给适配器传递解析数据
shopCarAdapter.setList(datas);
}
// 失败
@Override
public void fail(int type, String error) {
}
}
商家的适配器
public class ShopCarAdapter extends RecyclerView.Adapter<ShopCarAdapter.ShopCarViewHolder>{
private Context context;
private List<ShopBean.DataBean> list=new ArrayList<>();
public ShopCarAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public ShopCarAdapter.ShopCarViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=View.inflate(context,R.layout.adapter_item,null);
ShopCarViewHolder shopCarViewHolder=new ShopCarViewHolder(view);
return shopCarViewHolder;
}
@Override
public void onBindViewHolder(@NonNull ShopCarAdapter.ShopCarViewHolder shopCarViewHolder, int i) {
// 获取商家名字
shopCarViewHolder.mTitle.setText(list.get(i).getSellerName());
// 获取商家下的商品
List<ShopBean.DataBean.ListBean> listShop=list.get(i).getList();
ShopCarItemAdapter shopCarItemAdapter = new ShopCarItemAdapter(context, listShop);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//一定要记住设置布局管理器
shopCarViewHolder.mRecycler.setLayoutManager(linearLayoutManager);
shopCarViewHolder.mRecycler.setAdapter(shopCarItemAdapter);
}
@Override
public int getItemCount() {
return list.size();
}
// 传递数据
public void setList(List<ShopBean.DataBean> list) {
this.list=list;
// 刷新 很重要
notifyDataSetChanged();
}
public class ShopCarViewHolder extends RecyclerView.ViewHolder {
RecyclerView mRecycler;
CheckBox mCheckBox;
TextView mTitle;
public ShopCarViewHolder(@NonNull View itemView) {
super(itemView);
mTitle = (TextView) itemView.findViewById(R.id.tv_title);
mRecycler = (RecyclerView) itemView.findViewById(R.id.recycler);
mCheckBox = (CheckBox) itemView.findViewById(R.id.checkbox);
}
}
商品的适配器
public class ShopCarItemAdapter extends RecyclerView.Adapter<ShopCarItemAdapter.ShopCarItemViewHolder> {
// 构造
private Context context;
private List<ShopBean.DataBean.ListBean> listShop=new ArrayList<>();
public ShopCarItemAdapter(Context context, List<ShopBean.DataBean.ListBean> listShop) {
this.context = context;
this.listShop = listShop;
}
@NonNull
@Override
public ShopCarItemAdapter.ShopCarItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=View.inflate(context,R.layout.adapter_item_child,null);
ShopCarItemViewHolder shopCarItemViewHolder=new ShopCarItemViewHolder(view);
return shopCarItemViewHolder;
}
@Override
public void onBindViewHolder(@NonNull ShopCarItemAdapter.ShopCarItemViewHolder shopCarItemViewHolder, int i) {
Glide.with(context).load(listShop.get(i).getImages()).into(shopCarItemViewHolder.mImage);
shopCarItemViewHolder.mTitle.setText(listShop.get(i).getTitle());
shopCarItemViewHolder.mPrice.setText(listShop.get(i).getPrice() + "");
}
@Override
public int getItemCount() {
return listShop.size();
}
public class ShopCarItemViewHolder extends RecyclerView.ViewHolder {
ShopCarAddView mShopCarAddView;
CheckBox mCheckBox;
TextView mPrice;
TextView mTitle;
ImageView mImage;
public ShopCarItemViewHolder(@NonNull View itemView) {
super(itemView);
mImage = (ImageView) itemView.findViewById(R.id.iv_shop);
mTitle = (TextView) itemView.findViewById(R.id.tv_title);
mPrice = (TextView) itemView.findViewById(R.id.tv_price);
mCheckBox=(CheckBox)itemView.findViewById(R.id.checkbox);
mShopCarAddView=(ShopCarAddView)itemView.findViewById(R.id.shop_car_view);
}
}
}
自定义view
public class ShopCarAddView extends RelativeLayout {
private Context mContext;
public ShopCarAddView(Context context) {
super(context);
init(context);
}
public ShopCarAddView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
// 初始化
private void init(Context context) {
this.mContext=context;
// 引入布局
View view=View.inflate(context,R.layout.shop_car_add_view,null);
addView(view);
}
}