1. 程式人生 > >Android簡單實現購物車

Android簡單實現購物車

View層=======================================================================

MianActivity:-------------------------------------------------------------------------------------------------------------------

public class MainActivity extends AppCompatActivity implements View.OnClickListener,IMainView {

    private 
ExpandableListView expandableListView; private CheckBox checkBox; private TextView tv_sum; private Button jisuan; private static final String TAG = "MainActivity0------"; private List<GouWuBean.DataBean> list_tmp; private MyAdapter myAdapter; @Override protected void onCreate
(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控制元件 initViews(); //請求資料 initDatas(); } private void initDatas() { PresenterImpl presenter = new PresenterImpl(); presenter.showGouWuCheToView(new ModelImpl(),this); } private void
initViews() { expandableListView = findViewById(R.id.expandable_list_view); checkBox = findViewById(R.id.cb); tv_sum = findViewById(R.id.tv_sum); jisuan = findViewById(R.id.jisuan); checkBox.setOnClickListener(this); jisuan.setOnClickListener(this); } //點選事件 @Override public void onClick(View v) { switch (v.getId()) { //全選,全部選 總價 case R.id.cb: boolean checked = checkBox.isChecked(); for (int i = 0; i < list_tmp.size(); i++) { list_tmp.get(i).setParent_flag(checked); List<GouWuBean.ChildBean> list_child = list_tmp.get(i).getList(); for (int j = 0; j < list_child.size(); j++) { list_child.get(j).setChild_flag(checked); } } //重新整理介面卡 myAdapter.notifyDataSetChanged(); //呼叫計算總價的方法 PresenterImpl presenter = new PresenterImpl(); presenter.showSumToView(new ModelImpl(),this); break; case R.id.jisuan: Toast.makeText(MainActivity.this,"去計算總價",Toast.LENGTH_SHORT).show(); break; } } //展示購物車資料 @Override public void showGowWuList(List<GouWuBean.DataBean> list) { list_tmp=list; Log.d(TAG, "showGowWuList: "+list); myAdapter = new MyAdapter(MainActivity.this, list,this); expandableListView.setAdapter(myAdapter); //展開expandablelistview int childCount = expandableListView.getCount(); for (int i = 0; i < childCount; i++) { expandableListView.expandGroup(i); } } //顯示總價 @Override public void showSum(double price) { tv_sum.setText("合計:"+price); } @Override public List<GouWuBean.DataBean> getList() { return list_tmp; } }

IMainViewj介面---------------------------------------------------------------------------------------------------------------

public interface IMainView {
    //顯示資料
void showGowWuList(List<GouWuBean.DataBean> list);
//顯示總價
void showSum(double price);
//獲取集合資料
List<GouWuBean.DataBean> getList();
}
AddSubView--------------------------------------------------------------------------------------------------------------------
public class AddSubView extends LinearLayout implements View.OnClickListener {

    private TextView add;
    private TextView sub;
    private EditText count;
    public AddSubView(Context context) {
        this(context, null);
}

    public AddSubView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
}

    public AddSubView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
View view = View.inflate(context, R.layout.add_layout, this);
add = view.findViewById(R.id.add);
sub = view.findViewById(R.id.sub);
add.setOnClickListener(this);
sub.setOnClickListener(this);
count = view.findViewById(R.id.count);
}

    @Override
public void onClick(View v) {
        switch (v.getId()) {
            case R.id.add:
                add();
                break;
            case R.id.sub:
                sub();
                break;
}
    }

    //新增
public void add() {
        String s = count.getText().toString();
        double i = Double.parseDouble(s);
i++;
count.setText(i + "");
}

    //減少
public void sub() {
        String s = count.getText().toString();
        double i = Double.parseDouble(s);
        if (i >= 1) {
            i--;
count.setText(i + "");
}

    }
    //設定數量
    //獲取數量
public String getCount() {
        return count.getText().toString();
}

    public void setCount(double count1){
        count.setText(count1+"");
}

}

presenter層===================================================================

PresenterImpl----------------------------------------------------------------------------------------------------------------

public class PresenterImpl implements IPresenter {
    private static final String TAG = "PresenterImpl----";
//顯示資料
@Override
public void showGouWuCheToView(IModel iModel, final IMainView iMainView) {
        Map<String, String> map = new HashMap<>();
map.put("uid", "71");
iModel.getGouWuCheData(HttpConfig.gouwuche_url, map, new GouWuCheListener() {

            @Override
public void getDataSuccess(String json) {
                Gson gson = new Gson();
GouWuBean gouWuBean = gson.fromJson(json, GouWuBean.class);
List<GouWuBean.DataBean> list = gouWuBean.getData();
//傳入view
iMainView.showGowWuList(list);
}

            @Override
public void getDataError(String error) {
                Log.d(TAG, "error: " + error);
}
        });
}
    //顯示計算結果
@Override
public void showSumToView(IModel iModel, final IMainView iMainView) {
        iModel.jisuan(iMainView.getList(), new JiSuanListener() {
            @Override
public void jiSuan(double price) {
                iMainView.showSum(price);
}
        });
}
}

IPresenter介面-------------------------------------------------------------------------------------------------------------------

public interface IPresenter {
    void showGouWuCheToView(IModel iModel, IMainView iMainView);
//將計算結果顯示到view
void showSumToView(IModel iModel, IMainView iMainView);
}

Model層=====================================================================

ModelImpl-------------------------------------------------------------------------------------------------------------------

public class ModelImpl implements IModel {
    private static final String TAG = "ModelImpl---";
@Override
public void getGouWuCheData(String url, Map<String, String> map, final GouWuCheListener gouWuCheListener) {
        HttpUtils httpUtils = HttpUtils.getHttpUtils();
httpUtils.okPost(url, map);
httpUtils.setOkLoadListener(new OkLoadListener() {
            @Override
public void okLoadSuccess(String json) {
                Log.d(TAG, "okLoadSuccess: "+json);
gouWuCheListener.getDataSuccess(json);
}

            @Override
public void okLoadError(String error) {
                Log.d(TAG, "okLoadError: "+error);
gouWuCheListener.getDataError(error);
}
        });
}

    @Override
public void jisuan(List<GouWuBean.DataBean> list, JiSuanListener jiSuanListener) {
        double sum = 0;
        for (int i = 0; i < list.size(); i++) {
            List<GouWuBean.ChildBean> list_child = list.get(i).getList();
            for (int j = 0; j < list_child.size(); j++) {
                boolean child_flag = list_child.get(j).isChild_flag();
                if (child_flag){
                    double price = list_child.get(j).getPrice();
sum+=price;
}

            }
        }
        //記得回撥
jiSuanListener.jiSuan(sum);
}
}

IModel介面----------------------------------------------------------------------------------------------------------------------

public interface IModel {
    //獲取購物車資料
void getGouWuCheData(String url, Map<String,String> map,GouWuCheListener gouWuCheListener);
//計算總價
void jisuan(List<GouWuBean.DataBean> list,JiSuanListener jiSuanListener);
}

JiSuanListenter介面------------------------------------------------------------------------------------------------------------

public interface JiSuanListener {
    void jiSuan(double price);
}

GouWuCheListenter介面-------------------------------------------------------------------------------------------------------

public interface GouWuCheListener {
    void getDataSuccess(String json);
    void getDataError(String error);
}

GouWuCheBean-------------------------------------------------------------------------------------------------------------

public class GouWuBean {

    /**
     * msg : 請求成功
     * code : 0
     * data : [{"list":[],"sellerName":"","sellerid":"0"},{"list":[{"bargainPrice":11800,"createtime":"2017-10-10T17:33:37","detailUrl":"https://item.m.jd.com/product/4338107.htmlChildBeanutm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg","num":2,"pid":57,"price":5199,"pscid":40,"selected":0,"sellerid":1,"subhead":"【i5 MX150 2G視訊記憶體】全高清窄邊框 8G記憶體 256固態硬碟 支援指紋識別 預裝WIN10系統","title":"小米(MI)Air 13.3英寸全金屬輕薄筆記本(i5-7200U 8G 256G PCle SSD MX150 2G獨顯 FHD 指紋識別 Win10)銀 "}],"sellerName":"商家1","sellerid":"1"},{"list":[{"bargainPrice":3455,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/12224420750.htmlChildBeanutm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","num":5,"pid":54,"price":888,"pscid":39,"selected":0,"sellerid":10,"subhead":"【現貨新品搶購】全面屏2.0震撼來襲,驍龍835處理器,四曲面陶瓷機","title":"小米(MI) 小米MIX2 手機 黑色 全網通 (6GB+64GB)【標配版】"}],"sellerName":"商家10","sellerid":"10"},{"list":[{"bargainPrice":3455,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/12224420750.htmlChildBeanutm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","num":1,"pid":56,"price":99,"pscid":39,"selected":0,"sellerid":12,"subhead":"【現貨新品搶購】全面屏2.0震撼來襲,驍龍835處理器,四曲面陶瓷機","title":"小米(MI) 小米MIX2 手機 黑色 全網通 (6GB+64GB)【標配版】"},{"bargainPrice":11800,"createtime":"2017-10-14T21:48:08","detailUrl":"https://mitem.jd.hk/ware/view.actionChildBeanwareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","num":1,"pid":68,"price":15000,"pscid":40,"selected":0,"sellerid":12,"subhead":"購買電腦辦公部分商品滿1元返火車票5元優惠券(返完即止)","title":"全球購 新款Apple MacBook Pro 蘋果膝上型電腦 銀色VP2新13英寸Bar i5/8G/256G"}],"sellerName":"商家12","sellerid":"12"}]
     */
private String msg;
    private String code;
    private List<DataBean> data;
    public String getMsg() {
        return msg;
}

    public void setMsg(String msg) {
        this.msg = msg;
}

    public String getCode() {
        return code;
}

    public void setCode(String code) {
        this.code = code;
}

    public List<DataBean> getData() {
        return data;
}

    public void setData(List<DataBean> data) {
        this.data = data;
}
    //商家
public static class DataBean {
        /**
         * list : []
         * sellerName :
         * sellerid : 0
         */
private String sellerName;
        private String sellerid;
        private List<ChildBean> list;
//狀態
private boolean parent_flag;
        public boolean isParent_flag() {
            return parent_flag;
}

        public void setParent_flag(boolean parent_flag) {
            this.parent_flag = parent_flag;
}

        public String getSellerName() {
            return sellerName;
}

        public void setSellerName(String sellerName) {
            this.sellerName = sellerName;
}

        public String getSellerid() {
            return sellerid;
}

        public void setSellerid(String sellerid) {
            this.sellerid = sellerid;
}

        public List<ChildBean> getList() {
            return list;
}

        public void setList(List<ChildBean> list) {
            this.list = list;
}
    }
    public class ChildBean{

        /**
         * bargainPrice : 11800
         * createtime : 2017-10-10T17:33:37
         * detailUrl : https://item.m.jd.com/product/4338107.htmlChildBeanutm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends
         * images : https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg
         * num : 2
         * pid : 57
         * price : 5199
         * pscid : 40
         * selected : 0
         * sellerid : 1
         * subhead : 【i5 MX150 2G視訊記憶體】全高清窄邊框 8G記憶體 256固態硬碟 支援指紋識別 預裝WIN10系統
         * title : 小米(MI)Air 13.3英寸全金屬輕薄筆記本(i5-7200U 8G 256G PCle SSD MX150 2G獨顯 FHD 指紋識別 Win10)銀
         */
private double bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private int num;
        private int pid;
        private double price;
        private int pscid;
        private int selected;
        private int sellerid;
        private String subhead;
        private String title;
//是否選中的狀態
private boolean child_flag;
        public boolean isChild_flag() {
            return child_flag;
}

        public void setChild_flag(boolean child_flag) {
            this.child_flag = child_flag;
}

        public double getBargainPrice() {
            return bargainPrice;
}

        public void setBargainPrice(double bargainPrice) {
            this.bargainPrice = bargainPrice;
}

        public String getCreatetime() {
            return createtime;
}

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
}

        public String getDetailUrl() {
            return detailUrl;
}

        public void setDetailUrl(String detailUrl) {
            this.detailUrl = detailUrl;
}

        public String getImages() {
            return images;
}

        public void setImages(String images) {
            this.images = images;
}

        public int getNum() {
            return num;
}

        public void setNum(int num) {
            this.num = num;
}

        public int getPid() {
            return pid;
}

        public void setPid(int pid) {
            this.pid = pid;
}

        public double getPrice() {
            return price;
}

        public void setPrice(double price) {
            this.price = price;
}

        public int getPscid() {
            return pscid;
}

        public void setPscid(int pscid) {
            this.pscid = pscid;
}

        public int getSelected() {
            return selected;
}

        public void setSelected(int selected) {
            this.selected = selected;
}

        public int getSellerid() {
            return sellerid;
}

        public void setSellerid(int sellerid) {
            this.sellerid = sellerid;
}

        public String getSubhead() {
            return subhead;
}

        public void setSubhead(String subhead) {
            this.subhead = subhead;
}

        public String getTitle() {
            return title;
}

        public void setTitle(String title) {
            this.title = title;
}
    }
}

HttpConfig---------------------------------------------------------------------------------------------------------------------

public class HttpConfig {
    public static String gouwuche_url = "https://www.zhaoapi.cn/product/getCarts";
}

HttpUtils------------------------------------------------------------------------------------------------------------------------

public class HttpUtils {
    private static final String TAG = "HttpUtils-----";
    private static HttpUtils httpUtils;
    private final int SUCCESS = 0;
    private final int ERROR = 1;
    private MyHandler myHandler = new MyHandler();
    private OkLoadListener okLoadListener;
    public static HttpUtils getHttpUtils() {
        if (httpUtils == null) {
            httpUtils = new HttpUtils();
}
        return httpUtils;
}

    class MyHandler extends Handler {
        @Override
public void handleMessage(Message msg) {
            switch (msg.what) {
                case SUCCESS:
                    //成功
String json = (String) msg.obj;
okLoadListener.okLoadSuccess(json);
                    break;
                case ERROR:
                    //失敗
String error = (String) msg.obj;
okLoadListener.okLoadError(error);
                    break;
}
        }
    }

    //get
public void okGet(String url) {
        OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new MyIntercepter()).build();
Request request = new Request.Builder().url(url).build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
            @Override
public void onFailure(Call call, IOException e) {
                Message message = myHandler.obtainMessage();
message.what = ERROR;
message.obj = e.getMessage();
myHandler.sendMessage(message);
}

            @Override
public void onResponse(Call call, Response response) throws IOException {
                Message message = myHandler.obtainMessage();
message.what = SUCCESS;
message.obj = response.body().string();
myHandler.sendMessage(message);
}
        });
}

    public void setOkLoadListener(OkLoadListener okLoadListener) {
        this.okLoadListener = okLoadListener;
}

    //post
public void okPost(String url, Map<String, String> params) {
        OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new MyIntercepter()).build();
FormBody.Builder builder = new FormBody.Builder();
Set<String> keySet = params.keySet();
        for (String key :
                keySet) {
            String value = params.get(key);
builder.add(key, value);
}
        FormBody formBody = builder.build();
Request request = new Request.Builder().url(url).post(formBody).build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
            @Override
public void onFailure(Call call, IOException e) {
                Message message = myHandler.obtainMessage();
message.what = ERROR;
message.obj = e.getMessage();
myHandler.sendMessage(message);
}

            @Override
public void onResponse(Call call, Response response) throws IOException {
                Message message = myHandler.obtainMessage();
message.what = SUCCESS;
message.obj = response.body().string();
myHandler.sendMessage(message);
}
        });
}

    //攔截器
class MyIntercepter implements Interceptor {
        //intercept 攔截
@Override
public Response intercept(Chain chain) throws IOException {
            //新增公共引數
         //post 取出原來所有的引數,將之加到新的請求體裡面。然後讓請求去執行
Request request = chain.request();
//獲取請求方法
String method = request.method();
            if (method.equals("GET")) {//---------------------------GET 攔截
                //取出url地址
String url = request.url().toString();
//拼接公共引數
boolean contains = url.contains("?");
                if (contains) {
                    url = url + "&source=android";
} else {
                    url = url + "?source=android";
}

                Request request1 = request.newBuilder().url(url).build();
Response response = chain.proceed(request1);
                return response;
} else if (method.equals("POST")) {//---------------------POST 攔截
RequestBody body = request.body();//請求體
if (body instanceof FormBody) {
                    //建立新的請求體
FormBody.Builder newBuilder = new FormBody.Builder();
                    for (int i = 0; i < ((FormBody) body).size(); i++) {
                        String key = ((FormBody) body).name(i);
String value = ((FormBody) body).value(i);
newBuilder.add(key, value);
}
                    //新增公共引數
newBuilder.add("source", "android");
FormBody newBody = newBuilder.build();
//建立新的請求體
Request request1 = request.newBuilder().post(newBody).build();
//去請求
Response response = chain.proceed(request1);
                    return response;
}
            }
            return null;
}
    }

    //上傳檔案(圖片)
public void upLoadImage(String url, String path) {//url 要上傳的地址。path 要上傳的檔案路徑
        //媒體型別
MediaType mediaType = MediaType.parse("image/*");
//multipartbody
MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);
File file = new File(path);
MultipartBody multipartBody = builder.addFormDataPart("file", file.getName(), RequestBody.create(mediaType, file)).build();
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(url).post(multipartBody).build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
            @Override
public void onFailure(Call call, IOException e) {
                Log.d(TAG, "上傳失敗0----: ");
}

            @Override
public void onResponse(Call call, Response response) throws IOException {
                Log.d(TAG, "上傳成功: ");
}
        });
}
}

OkLoadListener介面---------------------------------------------------------------------------------------------------------

public interface OkLoadListener {
    void okLoadSuccess(String json);
    void okLoadError(String error);
}

MyAdapter---------------------------------------------------------------------------------------------------------------

public class MyAdapter extends BaseExpandableListAdapter {
    private Context context;
    private List<GouWuBean.DataBean> list;
    private IMainView iMainView;
    public MyAdapter(Context context, List<GouWuBean.DataBean> list, IMainView iMainView) {
        this.list = list;
        this.context = context;
        this.iMainView = iMainView;
}

    @Override
public int getGroupCount() {
        return list.size();
}

    @Override
public int getChildrenCount(int groupPosition) {
        return list.get(groupPosition).getList().size();
}

    @Override
public Object getGroup(int groupPosition) {
        return list.get(groupPosition);
}

    @Override
public Object getChild(int groupPosition, int childPosition) {
        return list.get(groupPosition).getList().get(childPosition);
}

    @Override
public long getGroupId(int groupPosition) {
        return groupPosition;
}

    @Override
public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
}

    @Override
public boolean 
            
           

相關推薦

Android簡單實現購物車

View層=======================================================================MianActivity:-------------------------------------------------

Android簡單實現將手機圖片上傳到server中

sdk etc mov 創建 ast bmi 以及 lena ews 在本例中。將會簡單的實現安卓手機將圖片上傳到server中。本例使用到了 server端:PHP+APACHE 客戶端:JAVA 先簡單實現一下server端的上傳並測試上傳

android簡單 實現 日曆,生日 原生簡單輕鬆搞定

先看下佈局    對應的一個輸入框點選觸發 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/an

Android簡單實現本地圖片和視訊選擇器功能

哈嘍,大家好,好久不見了,很久沒有更新 Android 方面的技術文章了,最近在忙公司的 AR 類的新產品,其中涉及到本地圖片和視訊的選擇和上傳功能。至於為什麼不用系統提供的圖片和視訊選擇器,原因你懂的,系統提供的選擇器只能通過 Intent 方式去獲取,這意味

Android簡單實現水波紋

public class WeatherView extends View { private Path path1,path2; private Paint paint1,paint2; private float Φ; pub

Android 簡單實現可全屏拖動,可點選的View

首先,我們都知道,拖動一個view,需要給它設定touchListener,或者重寫他的touchEvent。我們以ImageView為例,自定義一個DragView,繼承ImageView。 單純的只是想讓view拖動,我們只需要在ACTION_DOWN

Android 簡單實現ListView頂部懸浮效果

首先上效果圖,實現如下效果:起初在網上搜了下實現這樣的效果,美團網,大眾點評的“購買框”懸浮效果也是這樣的,不過作者實現比較麻煩,自己想了想就根據ListView提供的一些特性進行了簡單實現。整個主要佈局就是一個ListView,如果listview的上面有內容且高度比較高,可以把它當做listview的he

Android 簡單實現Activity介面變暗效果

效果圖: 程式碼實現如下: private void dimBackground(final float from, final float to) { final W

jQuery複習 簡單實現購物車功能

每天記錄自己在學校學到的點點滴滴,讓每天的生活過的更加充實!加油! 注:本次案例簡單實現購物選擇的功能! 實現效果:新增部分產品,左邊為勾選框,右邊為商品和數量選擇,數量可以增加或減少,只有複選框勾選的時候,新增產品才可以顯示所需金額,下方為商品總價格! html程式碼: <table i

jQuery復習 簡單實現購物車功能

案例 效果 ble rev click javascrip 功能 spa 長虹 每天記錄自己在學校學到的點點滴滴,讓每天的生活過的更加充實!加油! 註:本次案例簡單實現購物選擇的功能! 實現效果:添加部分產品,左邊為勾選框,右邊為商品和數量選擇,數量可以增加或減少,只有復選

Android --- 簡單實現三級快取

三級快取:     1、網路快取 從網路獲取資源(非同步載入)     2、本地快取 從本地獲取資料(File儲存)     3、記憶體快取 從記憶體獲取資料(LruCache) 1、記憶體快取:LruCache   主要是用到了LruCache這

Android --- 簡單實現三級快取LruCache

  三級快取:     1、網路快取 從網路獲取資源     2、本地快取 從本地獲取資料     3、記憶體快取 從記憶體獲取資料   記憶體快取:主要是用到了LruCache這個類,這個類比較適合用來快取圖片,它會將強引用物件放在LineedHashMap中,當快取資料大小達到預定值的時候會將在該

用Cookie和Session簡單實現購物車

作為單身汪的小編,無法體會到被女神逼著清空購物車的那種”快感”!!,罷特!!我可以自己清空呀!! 傲嬌臉~~ 冰箱, 手機, 電視, 手電筒 來一套!!(ps:手電筒是什麼鬼!!) 下面我用Cookie和Session來清空購物車裡的這4樣東東!! 感覺

Android簡單實現BroadCastReceiver廣播機制

Android中廣播的作用是非常明顯的,當我們收到一條資訊,可能我們的應用需要處理一些資料,可能我們開機,我們的應用也需要處理一些資料,這裡都用到了廣播機制,這裡簡單的實現了一個自定義廣播,看例項: MyBroadcastReceiver.java pac

Android簡單實現下拉重新整理和上拉重新整理

先把佈局檔案裡面新增一個ListView控制元件, <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.a

Android簡單實現 快取資料

前言 1、每一種要快取的資料都是有對應的versionCode,通過versionCode請求網路獲取是否需要更新 2、提前將要快取的資料放入assets資料夾中,打包上線。 快取設計 程式碼實現 /** * Created by hua

Android簡單實現高德地圖顯示及定位

1、要實現高德地圖的定位,首先要下載高德地圖的SDK 下載地址:http://lbs.amap.com/api/android-location-sdk/download/ 然後在高德地圖官網上登入你註冊的賬號並且去控制檯

Android簡單實現Socket通訊,客戶端連線伺服器後,伺服器向客戶端傳送文字資料

案例實現的是簡單的Socket通訊,當客戶端(Android客戶端)連線到指定伺服器以後,伺服器向客戶端傳送一句話文字資訊(你可以拓展其它的了) 先看一下服務端程式的實現吧 Server.java import java.io.IOException;

android 簡單二級購物車的刪除方法

**在二級列表的佈局裡寫,注意寫在 return view 之前** holder.tv_del.setOnClickListener(new View.OnClickListener() { @Override

Android 簡單實現三級列表

第一步對應在  main 下面建立一個assets檔案 ,裡面放入自己寫好的檔案 裡面對應的事城市 佈局就一個textview <TextView android:id="@+id/tv_address" android:textS