<登陆-注册-详情界面-模拟购物车界面-模拟订单界面>-----6购物车
2018-01-19 13:11
399 查看
//生成购物车bean
//mvp
//m
public interface CartModuleListener {
void success(CartBean cartBean);
}
//pimport java.util.ArrayList;
import java.util.List;
import demo.sharesdk.cn.test01.bean.CartBean;
import demo.sharesdk.cn.test01.shopcart.module.CartModule;
import demo.sharesdk.cn.test01.shopcart.view.viewinterface.CartModuleListener;
import demo.sharesdk.cn.test01.shopcart.view.viewinterface.CartPresenterListener;
/**
* Created by QinQinBaoBei on 2018/1/16.
*/
public class CartPresenter {
CartPresenterListener cartPresenterListener;
private final CartModule cartModule;
public CartPresenter(CartPresenterListener cartPresenterListener) {
this.cartPresenterListener = cartPresenterListener;
cartModule = new CartModule();
}
//获取数据
public void getData(){
cartModule.getData(new CartModuleListener() {
@Override
public void success(CartBean cartBean) {
//拿到一级二级数据返回去
List<CartBean.DataBean> group = cartBean.getData();
List<List<CartBean.DataBean.ListBean>> child = new ArrayList<>();
for (int i=0;i<group.size();i++){
child.add(group.get(i).getList());
}
if(cartPresenterListener!=null){
cartPresenterListener.success(group,child);
}
}
});
}
public void detach(){
cartPresenterListener=null;
}
}
//vpublic interface CartPresenterListener {
void success(List<CartBean.DataBean> group,List<List<CartBean.DataBean.ListBean>> child);
}
//activity 布局代码<RelativeLayout 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:layout_height="match_parent"
tools:context=".activity.ShopCartActivity">
<RelativeLayout
android:id="@+id/linear2"
android:background="#000"
android:layout_width="match_parent"
android:layout_height="60dp">
<TextView
android:layout_centerInParent="true"
android:textColor="#fff"
android:textSize="20sp"
android:text="购物车"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/bianji"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编辑"
android:textColor="#fff"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
/>
</RelativeLayout>
<ExpandableListView
android:layout_below="@+id/linear2"
android:groupIndicator="@null"
android:layout_above="@+id/linear"
android:id="@+id/expandView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ExpandableListView>
<RelativeLayout
android:background="#AAAAAA"
android:id="@+id/linear"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="70dp">
<CheckBox
android:layout_c
cfe8
enterVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"
android:id="@+id/checkAll"
/>
<TextView
android:id="@+id/zprice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="总计:0.0¥"
android:layout_centerInParent="true"
/>
<Button
android:id="@+id/zcount"
android:textColor="#fff"
android:background="#FF0000"
android:text="结算(0)"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>
</RelativeLayo
//二级列表适配器//自定义加减号
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<Button
android:layout_width="35dp"
android:layout_height="35dp"
android:text="-"
android:id="@+id/jian"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edit"
/>
<Button
android:text="+"
android:id="@+id/jia"
android:layout_width="35dp"
android:layout_height="35dp" />
</LinearLayout>
//二级表适配器<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:gravity="center_vertical"
android:id="@+id/linear"
android:layout_height="match_parent">
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/simpleDrawee"
/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/price"
android:text="价格"
/>
<TextView
android:layout_marginTop="20dp"
android:text="标题"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/titleTextview"
/>
</LinearLayout>
</LinearLayout>
public interface DeleteModuleListener {
void success(CartDeleteBean cartDeleteBean);
}
import demo.sharesdk.cn.test01.shopcart.module.CartDeleModule;
import demo.sharesdk.cn.test01.shopcart.view.viewinterface.DeleteModuleListener;
import demo.sharesdk.cn.test01.shopcart.view.viewinterface.DeletePresenterListener;
public class CartDelePresenter {
//拿到m层实例
private static CartDeleModule cartDeleModule = new CartDeleModule();
//删除数据
public static void getData(String pid, final DeletePresenterListener deletePresenterListener){
cartDeleModule.getData(pid, new DeleteModuleListener() {
@Override
public void success(CartDeleteBean cartDeleteBean) {
//回传数据
if(deletePresenterListener!=null){
deletePresenterListener.success(cartDeleteBean.getCode()+"");
}
}
});
}
}
//vpublic interface DeletePresenterListener {
void success(String s);
}
//mvp
//m
public interface CartModuleListener {
void success(CartBean cartBean);
}
import com.bwei.gaochao.text2.addcart_mvp.model.AddCartModel; import com.bwei.gaochao.text2.addcart_mvp.model.AddCartModelListener; import com.bwei.gaochao.text2.addcart_mvp.view.AddCartViewListener; import com.bwei.gaochao.text2.bean.AddCartbean; public class AddCartPersenter { AddCartViewListener addCartViewListener; AddCartModel addCartModel; public AddCartPersenter(AddCartViewListener addCartViewListener){ this.addCartViewListener = addCartViewListener; addCartModel = new AddCartModel(); } public void getData(String pid){ addCartModel.getData(pid, new AddCartModelListener() { @Override public void success(AddCartbean addCartbean) { if (addCartViewListener != null){ addCartViewListener.success(addCartbean.getMsg()); } } }); } public void detach(){ addCartViewListener=null; } }
//pimport java.util.ArrayList;
import java.util.List;
import demo.sharesdk.cn.test01.bean.CartBean;
import demo.sharesdk.cn.test01.shopcart.module.CartModule;
import demo.sharesdk.cn.test01.shopcart.view.viewinterface.CartModuleListener;
import demo.sharesdk.cn.test01.shopcart.view.viewinterface.CartPresenterListener;
/**
* Created by QinQinBaoBei on 2018/1/16.
*/
public class CartPresenter {
CartPresenterListener cartPresenterListener;
private final CartModule cartModule;
public CartPresenter(CartPresenterListener cartPresenterListener) {
this.cartPresenterListener = cartPresenterListener;
cartModule = new CartModule();
}
//获取数据
public void getData(){
cartModule.getData(new CartModuleListener() {
@Override
public void success(CartBean cartBean) {
//拿到一级二级数据返回去
List<CartBean.DataBean> group = cartBean.getData();
List<List<CartBean.DataBean.ListBean>> child = new ArrayList<>();
for (int i=0;i<group.size();i++){
child.add(group.get(i).getList());
}
if(cartPresenterListener!=null){
cartPresenterListener.success(group,child);
}
}
});
}
public void detach(){
cartPresenterListener=null;
}
}
//vpublic interface CartPresenterListener {
void success(List<CartBean.DataBean> group,List<List<CartBean.DataBean.ListBean>> child);
}
//activity 布局代码<RelativeLayout 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:layout_height="match_parent"
tools:context=".activity.ShopCartActivity">
<RelativeLayout
android:id="@+id/linear2"
android:background="#000"
android:layout_width="match_parent"
android:layout_height="60dp">
<TextView
android:layout_centerInParent="true"
android:textColor="#fff"
android:textSize="20sp"
android:text="购物车"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/bianji"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编辑"
android:textColor="#fff"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
/>
</RelativeLayout>
<ExpandableListView
android:layout_below="@+id/linear2"
android:groupIndicator="@null"
android:layout_above="@+id/linear"
android:id="@+id/expandView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ExpandableListView>
<RelativeLayout
android:background="#AAAAAA"
android:id="@+id/linear"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="70dp">
<CheckBox
android:layout_c
cfe8
enterVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"
android:id="@+id/checkAll"
/>
<TextView
android:id="@+id/zprice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="总计:0.0¥"
android:layout_centerInParent="true"
/>
<Button
android:id="@+id/zcount"
android:textColor="#fff"
android:background="#FF0000"
android:text="结算(0)"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>
</RelativeLayo
import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.ExpandableListView; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import demo.sharesdk.cn.test01.R; import demo.sharesdk.cn.test01.adapter.MyAdapter; import demo.sharesdk.cn.test01.bean.CartBean; import demo.sharesdk.cn.test01.shopcart.presenter.CartPresenter; import demo.sharesdk.cn.test01.shopcart.view.viewinterface.CartPresenterListener; public class ShopCartActivity extends AppCompatActivity implements CartPresenterListener { @BindView(R.id.expandView) ExpandableListView expandView; @BindView(R.id.checkAll) CheckBox mCheckAll; @BindView(R.id.zprice) TextView mZprice; @BindView(R.id.zcount) Button mZcount; @BindView(R.id.linear) RelativeLayout mLinear; @BindView(R.id.bianji) TextView mBianji; private MyAdapter myAdapter; private String edit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shop_cart); ButterKnife.bind(this); CartPresenter myPresenter = new CartPresenter(this); myPresenter.getData(); } @OnClick({R.id.checkAll, R.id.bianji,R.id.zcount}) public void onClick(View v) { switch (v.getId()) { default: break; case R.id.checkAll: myAdapter.checkedAll(mCheckAll.isChecked()); break; case R.id.bianji: break; case R.id.zcount: Intent intent = new Intent(ShopCartActivity.this,DingGoodsActivity.class); startActivity(intent); break; } } @Override public void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child) { myAdapter = new MyAdapter(ShopCartActivity.this, group, child); myAdapter.setChangeListener(new MyAdapter.ChangeListener() { @Override public void setState(boolean flag) { mCheckAll.setChecked(flag); } @Override public void setText(String price, String count) { mZcount.setText("结算(" + count + ")"); mZprice.setText("总计:" + price + "¥"); } }); expandView.setAdapter(myAdapter); //默认展开 for (int i = 0; i < group.size(); i++) { expandView.expandGroup(i); } } }
//二级列表适配器//自定义加减号
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<Button
android:layout_width="35dp"
android:layout_height="35dp"
android:text="-"
android:id="@+id/jian"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edit"
/>
<Button
android:text="+"
android:id="@+id/jia"
android:layout_width="35dp"
android:layout_height="35dp" />
</LinearLayout>
import android.content.Context; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.Toast; import demo.sharesdk.cn.test01.R; public class CustomLinearLayout extends LinearLayout { private int i=1; private EditText et; public CustomLinearLayout(Context context) { super(context); } public CustomLinearLayout(final Context context, @Nullable AttributeSet attrs) { super(context, attrs); View view = View.inflate(context, R.layout.custom_linearlayout,null); addView(view); Button jia = view.findViewById(R.id.jia); Button jian = view.findViewById(R.id.jian); et = view.findViewById(R.id.edit); et.setText("1"); jia.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { i = Integer.parseInt(et.getText().toString().trim()); i++; et.setText(i+""); if(countListener!=null){ countListener.setCount(i); } } }); jian.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context,i+"",Toast.LENGTH_SHORT).show(); i = Integer.parseInt(et.getText().toString().trim()); if(i>1){ i--; }else{ Toast.makeText(context,"数量不能小于1",Toast.LENGTH_SHORT).show(); } et.setText(i+""); if(countListener!=null){ countListener.setCount(i); } } }); } public CustomLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } CountListener countListener; public void getCount(CountListener countListener){ this.countListener = countListener; } public interface CountListener{ void setCount(int i); } public void setText(String count){ et.setText(count); } }
//二级表适配器<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:gravity="center_vertical"
android:id="@+id/linear"
android:layout_height="match_parent">
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/simpleDrawee"
/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/price"
android:text="价格"
/>
<TextView
android:layout_marginTop="20dp"
android:text="标题"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/titleTextview"
/>
</LinearLayout>
</LinearLayout>
import android.content.Context; import android.content.Intent; import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import com.facebook.cache.disk.DiskCacheConfig; import com.facebook.common.internal.Supplier; import com.facebook.common.util.ByteConstants; import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.imagepipeline.cache.MemoryCacheParams; import com.facebook.imagepipeline.core.ImagePipelineConfig; import com.facebook.imagepipeline.listener.RequestListener; import com.facebook.imagepipeline.listener.RequestLoggingListener; import java.util.HashSet; import java.util.List; import java.util.Set; import demo.sharesdk.cn.test01.R; import demo.sharesdk.cn.test01.bean.DataDataBean; import demo.sharesdk.cn.test01.activity.DetailsActivity; public class MyProductAdapter extends RecyclerView.Adapter{ Context context; List<DataDataBean.DataBean> dataDataBean; private static final int MAX_HEAP_SIZE = (int) Runtime.getRuntime().maxMemory(); public static final int MAX_DISK_CACHE_SIZE = 40 * ByteConstants.MB; public static final int MAX_MEMORY_CACHE_SIZE = MAX_HEAP_SIZE / 4; private static final String IMAGE_PIPELINE_CACHE_DIR = "imagepipeline_cache"; private static ImagePipelineConfig sImagePipelineConfig; private static ImagePipelineConfig sOkHttpImagePipelineConfig; public MyProductAdapter(Context context, List<DataDataBean.DataBean> dataDataBean) { this.context = context; this.dataDataBean = dataDataBean; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.product_recycler_item,null); return new ViewHolder1(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { ViewHolder1 holder1 = (ViewHolder1) holder; //设置数据 String[] split = dataDataBean.get(position).getImages().split("\\|"); holder1.imageView.setImageURI(Uri.parse(split[0])); holder1.price.setText(dataDataBean.get(position).getPrice()+""); holder1.title.setText(dataDataBean.get(position).getTitle()); //点击事件 holder1.linearLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context,DetailsActivity.class); intent.putExtra("pid",dataDataBean.get(position).getPscid()+""); context.startActivity(intent); } }); } @Override public int getItemCount() { return dataDataBean.size(); } class ViewHolder1 extends RecyclerView.ViewHolder { SimpleDraweeView imageView; TextView title; TextView price; LinearLayout linearLayout; public ViewHolder1(View itemView) { super(itemView); imageView = itemView.findViewById(R.id.simpleDrawee); title = itemView.findViewById(R.id.titleTextview); price = itemView.findViewById(R.id.price); linearLayout = itemView.findViewById(R.id.linear); } } /** * 配置内存缓存和磁盘缓存 */ private static void configureCaches( ImagePipelineConfig.Builder configBuilder, Context context) { final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams( // Max total size of elements in the cache MAX_MEMORY_CACHE_SIZE, // Max entries in the cache Integer.MAX_VALUE, // Max total size of elements in eviction queue MAX_MEMORY_CACHE_SIZE, // Max length of eviction queue Integer.MAX_VALUE, // Max cache entry size Integer.MAX_VALUE); configBuilder .setBitmapMemoryCacheParamsSupplier( new Supplier<MemoryCacheParams>() { @Override public MemoryCacheParams get() { return bitmapCacheParams; } }) .setMainDiskCacheConfig( DiskCacheConfig.newBuilder(context) .setBaseDirectoryPath(context.getApplicationContext().getCacheDir()) .setBaseDirectoryName(IMAGE_PIPELINE_CACHE_DIR) .setMaxCacheSize(MAX_DISK_CACHE_SIZE) .build()); } private static void configureLoggingListeners(ImagePipelineConfig.Builder configBuilder) { Set<RequestListener> requestListeners = new HashSet<>(); requestListeners.add(new RequestLoggingListener()); configBuilder.setRequestListeners(requestListeners); } private static void configureOptions(ImagePipelineConfig.Builder configBuilder) { configBuilder.setDownsampleEnabled(true); } }//删除
public interface DeleteModuleListener {
void success(CartDeleteBean cartDeleteBean);
}
import java.util.HashMap; import java.util.Map; import demo.sharesdk.cn.test01.bean.CartDeleteBean; import demo.sharesdk.cn.test01.shopcart.view.viewinterface.DeleteModuleListener; import demo.sharesdk.cn.test01.retrofit.BaseObserver; import demo.sharesdk.cn.test01.retrofit.RetrofitManager; public class CartDeleModule { public void getData(String pid, final DeleteModuleListener deleteModuleListener){ Map<String, String> map = new HashMap<>(); map.put("uid","100"); map.put("pid",pid); //删除数据的接口调用 RetrofitManager.get("/product/deleteCart", map, new BaseObserver<CartDeleteBean>() { @Override public void success(CartDeleteBean cartDeleteBean) { if(deleteModuleListener !=null){ deleteModuleListener.success(cartDeleteBean); } } @Override public void failure(int code) { } }); } }//pimport demo.sharesdk.cn.test01.bean.CartDeleteBean;
import demo.sharesdk.cn.test01.shopcart.module.CartDeleModule;
import demo.sharesdk.cn.test01.shopcart.view.viewinterface.DeleteModuleListener;
import demo.sharesdk.cn.test01.shopcart.view.viewinterface.DeletePresenterListener;
public class CartDelePresenter {
//拿到m层实例
private static CartDeleModule cartDeleModule = new CartDeleModule();
//删除数据
public static void getData(String pid, final DeletePresenterListener deletePresenterListener){
cartDeleModule.getData(pid, new DeleteModuleListener() {
@Override
public void success(CartDeleteBean cartDeleteBean) {
//回传数据
if(deletePresenterListener!=null){
deletePresenterListener.success(cartDeleteBean.getCode()+"");
}
}
});
}
}
//vpublic interface DeletePresenterListener {
void success(String s);
}
相关文章推荐
- <登陆-注册-详情界面-模拟购物车界面-模拟订单界面>-----1.登陆
- <登陆-注册-详情界面-模拟购物车界面-模拟订单界面>-----7订单界面
- <登陆-注册-详情界面-模拟购物车界面-模拟订单界面>-----2.注册
- <登陆-注册-详情界面-模拟购物车界面-模拟订单界面>-----5.添加购物车
- <登陆-注册-详情界面-模拟购物车界面-模拟订单界面>-----3.商品列表界面
- <登陆-注册-详情界面-模拟购物车界面-模拟订单界面>----4.详情页
- 模拟登陆注册界面
- Rerofit登录注册购物列表详情页购物车跳转订单
- MVP框架做的登陆注册,商品列表,商品详情,购物车功能 RxJava+Retrofit ijkplayer EventBus ButterKnife
- 登陆/注册/列表/详情/购物车
- 属性动画详情和购物车加订单
- 登录注册+商品列表+商品详情+购物车+全选反选+删除
- Js 模拟注册界面 基础学习
- andriod———1.实现原生登录注册。 2.首页完成商品列表展示点击相对应的商品ID进入商品详情 3.商品详情页面展示数据,点击加入购物车进入购物车页面 4.购物车页面完成购物车编辑,删除,功能
- JAVA之简单界面设计(布局,更改背景图片,按钮监听 + 数据库登陆注册相关..)
- 基于python的Tkinter编写登陆注册界面
- 接口回调实现登陆注册界面
- iOS关于如何让<界面切换逻辑>与<数据业务逻辑>解耦的探讨
- Java EE登陆界面生成随机数防止恶意注册或者登录
- 黑马程序员—java技术blog—第十一篇java基础应用命令行模拟登陆注册