瀑布流和一级购物车

来源:互联网 发布:php测试工具 编辑:程序博客网 时间:2024/04/18 11:26

SecondActivity

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <android.support.v7.widget.RecyclerView        android:id="@+id/reyview"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1">    </android.support.v7.widget.RecyclerView>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <ImageView            android:id="@+id/checkall"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:src="@drawable/shopcart_unselected" />        <LinearLayout            android:layout_width="wrap_content"            android:layout_height="20dp"            android:layout_gravity="center"            android:orientation="horizontal">            <TextView                android:id="@+id/totalprice"                android:layout_width="200dp"                android:layout_height="wrap_content"                android:text="总价:"                android:textColor="#000000" />            <TextView                android:id="@+id/totalnum"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="共0件商品"                android:textColor="#000000" />        </LinearLayout>       <TextView           android:id="@+id/textview1"           android:layout_width="wrap_content"           android:layout_height="wrap_content"           android:text="sldgkjl"           />        <Button            android:id="@+id/submit"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="去结算"            android:textColor="#000000" />    </LinearLayout></LinearLayout>

Customview布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal">    <Button        android:layout_width="10dp"        android:layout_height="wrap_content"        android:id="@+id/revserse"        android:text="-"        android:background="#00FFFFFF"/>    <EditText        android:text="1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/content"/>    <Button        android:background="#00FFFFFF"        android:text="+"        android:id="@+id/add"        android:layout_width="10dp"        android:layout_height="wrap_content"        /></LinearLayout>
ShopActivity布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal"    android:gravity="center_vertical">    <CheckBox        android:layout_width="wrap_content"        android:layout_gravity="center"        android:id="@+id/checkbox"        android:layout_height="wrap_content" />    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical">        <ImageView            android:id="@+id/shopface"            android:layout_width="100dp"            android:layout_height="100dp"            android:src="@mipmap/ic_launcher"/>        <TextView            android:id="@+id/danjia"            android:text="aaaaaaaaaaaa"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <com.bwie.lenovo.moniyuekao.CustomView            android:id="@+id/customviewid"            android:layout_width="match_parent"            android:layout_height="wrap_content" />    </LinearLayout>    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/shop_btn_del"        android:text="删除"/></LinearLayout>
瀑布流放置图片的布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"><ImageView    android:id="@+id/imageview"    android:layout_width="wrap_content"    android:layout_height="wrap_content" /></LinearLayout>

Activity

package com.bwie.lenovo.moniyuekao.activity;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import android.widget.LinearLayout;import android.widget.Toast;import com.bwie.lenovo.moniyuekao.R;import com.bwie.lenovo.moniyuekao.adapter.MyRecycleAdapter;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private RecyclerView recycle;    private MyRecycleAdapter myRecycleAdapter;    private List<String> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        recycle = (RecyclerView) findViewById(R.id.recyclerview);        list = new ArrayList<>();       list.add("http://img.my.csdn.net/uploads/201309/01/1378037235_3453.jpg");       list.add("http://img.my.csdn.net/uploads/201309/01/1378037235_7476.jpg");                list.add( "http://img.my.csdn.net/uploads/201309/01/1378037235_9280.jpg");                list.add( "http://img.my.csdn.net/uploads/201309/01/1378037234_3539.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037234_6318.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037194_2965.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037193_1687.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037193_1286.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037192_8379.jpg");                list.add( "http://img.my.csdn.net/uploads/201309/01/1378037178_9374.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037177_1254.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037177_6203.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037152_6352.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037151_9565.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037151_7904.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037148_7104.jpg");                list.add("http://img.my.csdn.net/uploads/201309/01/1378037129_8825.jpg");        // 九宫格管理器        // new GridLayoutManager();        //布局管理器        //new LinearLayout()        //瀑布流管理器        //new StaggeredGridLayoutManager();        recycle.setLayoutManager(new StaggeredGridLayoutManager(3, LinearLayout.VERTICAL));        myRecycleAdapter = new MyRecycleAdapter(this, list);        recycle.setAdapter(myRecycleAdapter);        myRecycleAdapter.setListener(new MyRecycleAdapter.OnClickListener() {            @Override            public void click(int position) {                Toast.makeText(MainActivity.this,"图片"+position,Toast.LENGTH_SHORT).show();                Intent intent=new Intent(MainActivity.this,SecondActivity.class);                startActivity(intent);            }        });    }}
SecondActivity
package com.bwie.lenovo.moniyuekao.activity;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import com.bwie.lenovo.moniyuekao.R;import com.bwie.lenovo.moniyuekao.adapter.ShopAdapter;import com.bwie.lenovo.moniyuekao.bean.ShopBean;import com.google.gson.Gson;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class SecondActivity extends AppCompatActivity implements View.OnClickListener{    private RecyclerView recyclerView;    private List<ShopBean.OrderDataBean.CartlistBean> list = new ArrayList<>();    private ShopAdapter adapter;    private LinearLayoutManager manager;    private TextView totalprice;    private TextView totalnum;        private ImageView checkall;    private TextView textView1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        recyclerView = (RecyclerView) findViewById(R.id.reyview);        checkall = (ImageView) findViewById(R.id.checkall);        totalprice = (TextView) findViewById(R.id.totalprice);        totalnum = (TextView) findViewById(R.id.totalnum);        textView1 = (TextView) findViewById(R.id.textview1);        getData();        checkall.setTag(1);        manager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);        adapter = new ShopAdapter(this,list);        recyclerView.setLayoutManager(manager);        recyclerView.setAdapter(adapter);        adapter.setCheckBoxListener(new ShopAdapter.CheckBoxListener() {            @Override            public void check(int position, int count, boolean check, List<ShopBean.OrderDataBean.CartlistBean> list) {                sun(list);            }        });        adapter.setCustomViewListener(new ShopAdapter.CustomViewListener() {            @Override            public void click(int count, List<ShopBean.OrderDataBean.CartlistBean> list) {                sun(list);            }        });        adapter.setDelLisenter(new ShopAdapter.DelLisenter() {            @Override            public void del(int present, List<ShopBean.OrderDataBean.CartlistBean> list) {                sun(list);            }        });        checkall.setOnClickListener(this);    }    float price = 0;    int count;    private void sun(List<ShopBean.OrderDataBean.CartlistBean> mAllLst) {        price = 0;        count = 0;        boolean allCheck = true;        for (ShopBean.OrderDataBean.CartlistBean bean : mAllLst){            if (bean.isCheck()){                price += bean.getPrice() * bean.getCount();                count += bean.getCount();            }else {                allCheck = false;            }            totalprice.setText(price+"");            totalnum.setText(count+"");            if (allCheck){                checkall.setTag(2);                checkall.setBackgroundResource(R.drawable.shopcart_selected);            }else {                checkall.setTag(1);                checkall.setBackgroundResource(R.drawable.shopcart_unselected);            }        }    }    private void getData() {        try {            InputStream inputStream = getAssets().open("shop.json");            String data = convertStreamToString(inputStream);            // Log.i("shopjson",data);            ShopBean shopBean = new Gson().fromJson(data,ShopBean.class);            for (int i = 0; i < shopBean.getOrderData().size(); i++){                int length = shopBean.getOrderData().get(i).getCartlist().size();                for (int j = 0; j < length; j++) {                    list.add(shopBean.getOrderData().get(i).getCartlist().get(j));                }            }        } catch (IOException e) {            e.printStackTrace();        }    }    public static String convertStreamToString(InputStream is) {        /*          * To convert the InputStream to String we use the BufferedReader.readLine()          * method. We iterate until the BufferedReader return null which means          * there's no more data to read. Each line will appended to a StringBuilder          * and returned as String.          */        BufferedReader reader = new BufferedReader(new InputStreamReader(is));        StringBuilder sb = new StringBuilder();        String line = null;        try {            while ((line = reader.readLine()) != null) {                sb.append(line);            }        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                is.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return sb.toString();    }    boolean select = false;    @Override    public void onClick(View v) {        int tag = (int) checkall  .getTag();        if (tag == 1){            checkall.setTag(2);            select = true;        }else {            checkall.setTag(1);            select = false;        }        for (ShopBean.OrderDataBean.CartlistBean bean : list){            bean.setCheck(select);        }        adapter.notifyDataSetChanged();        sun(adapter.getList());    }}
adapter

MyRecycleAdapter
package com.bwie.lenovo.moniyuekao.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.WindowManager;import android.widget.ImageView;import com.bwie.lenovo.moniyuekao.R;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;import java.util.Random;/** * Created by lenovo on 2017/11/18. */public class MyRecycleAdapter  extends RecyclerView.Adapter<MyRecycleAdapter.ImageViewHolder>{    Context context;    List<String> list;    int itemWidth;    public MyRecycleAdapter(Context context, List<String> list) {        this.context = context;        this.list = list;        WindowManager wm = (WindowManager) context                .getSystemService(Context.WINDOW_SERVICE);        int width =wm.getDefaultDisplay().getWidth();        itemWidth = width/3;    }    @Override    public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        //创建一个view        View view = LayoutInflater.from(context).inflate(R.layout.layout_ainm,null);        return new ImageViewHolder(view);    }    //绑定view显示数据    @Override    public void onBindViewHolder(ImageViewHolder holder, final int position) {        //显示图片        ViewGroup.LayoutParams params = holder.imageview.getLayoutParams();        int itemHeight = 200;        itemHeight = new Random().nextInt(400);        if(itemHeight < 200){            itemHeight = 200;        }        params.width = itemWidth;        params.height = itemHeight;        holder.imageview.setLayoutParams(params);        ImageLoader.getInstance().displayImage(list.get(position),holder.imageview);        holder.imageview.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                listener.click(position);            }        });    }    @Override    public int getItemCount() {        return list.size();    }    static class ImageViewHolder extends RecyclerView.ViewHolder {        ImageView imageview;        public ImageViewHolder(View itemView) {            super(itemView);            imageview = (ImageView) itemView.findViewById(R.id.imageview);        }    }    private OnClickListener listener;    public void setListener(OnClickListener listener) {        this.listener = listener;    }   public  interface OnClickListener{         void click(int position);    }}
package com.bwie.lenovo.moniyuekao.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.CheckBox;import android.widget.ImageView;import android.widget.TextView;import com.bwie.lenovo.moniyuekao.CustomView;import com.bwie.lenovo.moniyuekao.R;import com.bwie.lenovo.moniyuekao.bean.ShopBean;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by lenovo on 2017/11/18. */public class ShopAdapter extends RecyclerView.Adapter<ShopAdapter.viewholder>{    Context context;    List<ShopBean.OrderDataBean.CartlistBean> list;    public ShopAdapter(Context context, List<ShopBean.OrderDataBean.CartlistBean> list) {        this.context = context;        this.list = list;    }    @Override    public ShopAdapter.viewholder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = View.inflate(context, R.layout.shop_adapter,null);        return  new viewholder(view);    }    @Override    public void onBindViewHolder(final ShopAdapter.viewholder holder, final int position) {        ImageLoader.getInstance().displayImage(list.get(position).getDefaultPic(),holder.shopface);        holder.checkbox.setChecked(list.get(position).isCheck());        holder.danjia.setText(list.get(position).getPrice()+"");        holder.checkbox.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                list.get(position).setCheck(holder.checkbox.isChecked());                notifyDataSetChanged();                if (checkBoxListener != null){                    checkBoxListener.check(position,holder.customviewid.getCurrentCount(),list.get(position).isCheck(),list);                }            }        });        holder.customviewid.setListener(new CustomView.ClickListener() {            @Override            public void click(int count) {                list.get(position).setCount(count);                notifyDataSetChanged();                if (customViewListener != null){                    customViewListener.click(count,list);                }            }        });        holder.shop_btn_del.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                list.remove(position);                notifyDataSetChanged();                if (delLisenter != null){                    delLisenter.del(position,list);                }            }        });    }    @Override    public int getItemCount() {        return list == null?0:list.size();    }    static class viewholder extends RecyclerView.ViewHolder{        private final CheckBox checkbox;        private final ImageView shopface;        private final TextView danjia;        private final CustomView customviewid;        private final Button shop_btn_del;        public viewholder(View itemView) {            super(itemView);            checkbox = (CheckBox) itemView.findViewById(R.id.checkbox);            shopface = (ImageView) itemView.findViewById(R.id.shopface);            shop_btn_del = (Button) itemView.findViewById(R.id.shop_btn_del);            danjia = (TextView) itemView.findViewById(R.id.danjia);            customviewid = (CustomView) itemView.findViewById(R.id.customviewid);        }    }    public CheckBoxListener checkBoxListener;    public void setCheckBoxListener(CheckBoxListener checkBoxListener){        this.checkBoxListener = checkBoxListener;    }    public interface CheckBoxListener{        public void check(int position, int count, boolean check, List<ShopBean.OrderDataBean.CartlistBean> list);    }    //加减号点击事件    CustomViewListener customViewListener;    public void setCustomViewListener(CustomViewListener customViewListener){        this.customViewListener = customViewListener;    }   public  interface CustomViewListener{        public void click(int count,List<ShopBean.OrderDataBean.CartlistBean> list);    }    public List<ShopBean.OrderDataBean.CartlistBean> getList(){        return list;    }    DelLisenter delLisenter;    public void setDelLisenter(DelLisenter delLisenter){        this.delLisenter = delLisenter;    }    public  interface DelLisenter{        public void del(int present, List<ShopBean.OrderDataBean.CartlistBean> list);    }}applaction
package com.bwie.lenovo.moniyuekao.applaction;import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by lenovo on 2017/11/18. */public class MyApp extends Application {    @Override    public void onCreate() {        super.onCreate();        ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this).build();        ImageLoader.getInstance().init(imageLoaderConfiguration);    }}
Customview
package com.bwie.lenovo.moniyuekao;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;/** * Created by lenovo on 2017/11/18. */public class CustomView extends LinearLayout {    private int mCount = 1;    private Button revserse;    private Button add;    private EditText editText;    public CustomView(Context context) {        super(context);    }    public CustomView(Context context, AttributeSet attrs) {        super(context, attrs);        View view = LayoutInflater.from(context).inflate(R.layout.customer,null,false);        revserse = (Button) view.findViewById(R.id.revserse);        add = (Button) view.findViewById(R.id.add);        editText = (EditText) view.findViewById(R.id.content);        revserse.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                try {                    String content = editText.getText().toString().trim();                    int count = Integer.valueOf(content);                    if (count > 1){                        count--;                        mCount = count;                        editText.setText(count+"");                    }                    if (listener != null){                        listener.click(count);                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        });        add.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                try {                    String content = editText.getText().toString().trim();                    int count = Integer.valueOf(content)+1;                    mCount = count;                    editText.setText(count+"");                    if (listener != null){                        listener.click(count);                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        });        addView(view);    }    public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    public int getCurrentCount(){        return mCount;    }    public ClickListener listener;    public void setListener(ClickListener listener){        this.listener = listener;    }     public   interface ClickListener{        public void click(int count);    }}