您的位置:首页 > 其它

<登陆-注册-详情界面-模拟购物车界面-模拟订单界面>-----6购物车

2018-01-19 13:11 399 查看
//生成购物车bean
//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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐