android 详情页到购物车
来源:互联网 发布:初中生学电脑编程 编辑:程序博客网 时间:2024/05/22 04:40
1.依赖
compile 'com.jakewharton:butterknife:8.8.1' compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.facebook.fresco:fresco:0.12.0' compile 'com.facebook.fresco:animated-base-support:0.12.0' compile 'com.facebook.fresco:animated-webp:0.12.0' compile 'com.facebook.fresco:webpsupport:0.12.0' compile 'io.reactivex.rxjava2:rxjava:2.1.7' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.google.code.gson:gson:2.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'2.权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />3.布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/my_image_view" android:layout_width="match_parent" android:layout_height="450dp" fresco:placeholderImage="@mipmap/ic_launcher" /> <TextView android:id="@+id/goods_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="a啊啊是你的" android:textSize="20dp" /> <TextView android:id="@+id/goods_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="¥ 18132" android:textColor="#dc5f2e" android:textSize="18dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="我是商家19" android:textSize="16dp" /> </LinearLayout> <LinearLayout android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <Button android:id="@+id/btn_addcart" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" android:background="#ffc207" android:text="加入购物车"/> <Button android:id="@+id/btn_shopping" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" android:background="#ff6b06" android:text="立即购买"/> </LinearLayout></RelativeLayout>
activity_main2.xml
<?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="vertical"> <!--头布局--> <LinearLayout android:id="@+id/top_bar" android:layout_width="match_parent" android:layout_height="48dp" android:background="#f7f7f7" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="48dp" android:background="@android:color/transparent" android:orientation="vertical" > <ImageView android:id="@+id/back" android:layout_width="48dp" android:layout_height="48dp" android:layout_alignParentLeft="true" android:layout_gravity="center_vertical" android:padding="12dp" android:src="@drawable/back" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:minHeight="48dp" android:text="购物车" android:textColor="#1a1a1a" android:textSize="16sp" /> <TextView android:id="@+id/edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="40dp" android:gravity="center" android:minHeight="48dp" android:text="编辑" android:textColor="#1a1a1a" android:textSize="14sp" android:visibility="visible" /> </RelativeLayout> </LinearLayout> <ExpandableListView android:id="@+id/exListView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:childIndicator="@null" android:groupIndicator="@null" > </ExpandableListView> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center_vertical" android:orientation="horizontal" > <CheckBox android:id="@+id/all_chekbox" android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="全选"/> <LinearLayout android:id="@+id/ll_info" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginRight="20dp" android:layout_weight="1" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="right" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="合计:" android:textSize="18sp" android:textStyle="bold" /> <TextView android:id="@+id/total_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="¥0.00" android:textColor="#f23232" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> <TextView android:id="@+id/total_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="共有商品:0件" android:gravity="right" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> <TextView android:id="@+id/tv_go_to_pay" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="3" android:background="#fd7a05" android:clickable="true" android:gravity="center" android:text="结算" android:textColor="#FAFAFA" /> </LinearLayout> </LinearLayout></LinearLayout>
ex_child_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="230dp" android:orientation="horizontal"> <CheckBox android:id="@+id/child_checkbox" android:layout_marginTop="50dp" android:layout_marginLeft="20dp" android:layout_marginBottom="50dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RelativeLayout android:layout_marginLeft="20dp" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/shop_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginLeft="17dp" android:layout_marginStart="17dp" android:text="TextView" android:layout_alignParentTop="true" /> <!--<ImageView android:id="@+id/shop_img" android:layout_width="90dp" android:layout_height="90dp" android:layout_marginTop="30dp" app:srcCompat="@mipmap/ic_launcher" android:layout_below="@+id/shop_name" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" />--> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/shop_img" android:layout_width="90dp" android:layout_height="90dp" android:layout_marginTop="30dp" fresco:placeholderImage="@mipmap/ic_launcher" android:layout_below="@+id/shop_name" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:id="@+id/shop_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/shop_img" android:layout_centerHorizontal="true" android:layout_marginTop="10dp" android:text="¥20" android:textColor="#f23232"/> <com.bwei.gepeng.myview.AddDeleteView android:id="@+id/adv" android:layout_width="160dp" android:layout_height="30dp" android:layout_below="@+id/shop_price" android:layout_marginTop="30dp" android:layout_marginLeft="140dp" app:left_text="-" app:right_text="+" app:middle_text="1" android:focusable="false" > </com.bwei.gepeng.myview.AddDeleteView> <Button android:id="@+id/shop_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:visibility="invisible" android:text="删除" /> </RelativeLayout></LinearLayout>
ex_group_item.xml
<?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:background="#cfc3c3" android:orientation="horizontal"> <CheckBox android:id="@+id/group_checkbox" android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="false"/> <TextView android:id="@+id/shop_name" android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16dp" /></LinearLayout>
layout_add_delete.xml
<?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:weightSum="1"> <TextView android:id="@+id/txt_delete" android:layout_width="30dp" android:layout_height="30dp" android:text="减" android:gravity="center" android:background="#8b948b"/> <EditText android:id="@+id/et_number" android:layout_marginTop="2dp" android:layout_width="50dp" android:layout_height="30dp" android:background="@drawable/edit" android:layout_weight="0.00" android:gravity="center" android:text="1"/> <TextView android:id="@+id/txt_add" android:layout_width="30dp" android:layout_height="30dp" android:text="加" android:gravity="center" android:background="#8b948b"/></LinearLayout>
4.drawable添加edit.xml
edit.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF" /> <!--<corners android:radius="3dip"/>--> <stroke android:width="1dip" android:color="#BDC7D8" /></shape>
values下面添加arrts.xml
arrts.xml
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="AddDeleteViewStyle"> <attr name="left_text" format="string"></attr> <attr name="right_text" format="string"></attr> <attr name="middle_text" format="string"></attr> <attr name="left_text_color" format="color"></attr> </declare-styleable></resources>
5.bean
GoodsShowBean
package com.bwei.gepeng.entity;public class GoodsShowBean { private double bargainPrice; private String createtime; private String detailUrl; private String images; private int itemtype; private int pid; private double price; private int pscid; private int salenum; private int sellerid; private String subhead; private String title; 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 getItemtype() { return itemtype; } public void setItemtype(int itemtype) { this.itemtype = itemtype; } 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 getSalenum() { return salenum; } public void setSalenum(int salenum) { this.salenum = salenum; } 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; } @Override public String toString() { return "GoodsShowBean{" + "bargainPrice=" + bargainPrice + ", createtime='" + createtime + '\'' + ", detailUrl='" + detailUrl + '\'' + ", images='" + images + '\'' + ", itemtype=" + itemtype + ", pid=" + pid + ", price=" + price + ", pscid=" + pscid + ", salenum=" + salenum + ", sellerid=" + sellerid + ", subhead='" + subhead + '\'' + ", title='" + title + '\'' + '}'; }}
ChildBean
package com.bwei.gepeng.entity;public class ChildBean { private String title; private String images; private double price; private int num; private boolean childCb; private boolean btn; public ChildBean(String title, String images, double price, int num, boolean childCb, boolean btn) { this.title = title; this.images = images; this.price = price; this.num = num; this.childCb = childCb; this.btn = btn; } public boolean isBtn() { return btn; } public void setBtn(boolean btn) { this.btn = btn; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getImages() { return images; } public void setImages(String images) { this.images = images; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public boolean isChildCb() { return childCb; } public void setChildCb(boolean childCb) { this.childCb = childCb; } @Override public String toString() { return "ChildBean{" + "title='" + title + '\'' + ", images='" + images + '\'' + ", price=" + price + ", num=" + num + ", childCb=" + childCb + '}'; }}
GroupBean
package com.bwei.gepeng.entity;public class GroupBean { private String sellerName; private boolean gropuCb; public GroupBean(String sellerName, boolean gropuCb) { this.sellerName = sellerName; this.gropuCb = gropuCb; } public String getSellerName() { return sellerName; } public void setSellerName(String sellerName) { this.sellerName = sellerName; } public boolean isGropuCb() { return gropuCb; } public void setGropuCb(boolean gropuCb) { this.gropuCb = gropuCb; } @Override public String toString() { return "GroupBean{" + "sellerName='" + sellerName + '\'' + ", gropuCb=" + gropuCb + '}'; }}
CartBean
package com.bwei.gepeng.entity;import java.util.List;public class CartBean { private String sellerName; private String sellerid; private List<ListBean> list; 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<ListBean> getList() { return list; } public void setList(List<ListBean> list) { this.list = list; } public static class ListBean { 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; 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; } } @Override public String toString() { return "CartBean{" + "sellerName='" + sellerName + '\'' + ", sellerid='" + sellerid + '\'' + ", list=" + list + '}'; }}
MessageBean
package com.bwei.gepeng.entity;public class MessageBean <T>{ private String code; private T data; private String msg; private SellerBean seller; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public T getData() { return data; } public void setData(T data) { this.data = data; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public SellerBean getSeller() { return seller; } public void setSeller(SellerBean seller) { this.seller = seller; } public static class SellerBean { /** * description : 我是商家19 * icon : http://120.27.23.105/images/icon.png * name : 商家19 * productNums : 999 * score : 5.0 * sellerid : 19 */ private String description; private String icon; private String name; private int productNums; private double score; private int sellerid; public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getProductNums() { return productNums; } public void setProductNums(int productNums) { this.productNums = productNums; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public int getSellerid() { return sellerid; } public void setSellerid(int sellerid) { this.sellerid = sellerid; } }}http
ApiService
package com.bwei.gepeng.http;import com.bwei.gepeng.entity.CartBean;import com.bwei.gepeng.entity.GoodsShowBean;import com.bwei.gepeng.entity.MessageBean;import java.util.List;import java.util.Map;import io.reactivex.Flowable;import retrofit2.http.GET;import retrofit2.http.QueryMap;public interface ApiService { //http://120.27.23.105/product/getProductDetail?pid=75&source=android @GET("product/getProductDetail") Flowable<MessageBean<GoodsShowBean>> getNews(@QueryMap Map<String,String> map); //查询购物车 //http://120.27.23.105/product/getCarts?uid=3802&source=android @GET("product/getCarts") Flowable<MessageBean<List<CartBean>>> getCart(@QueryMap Map<String,String> map);}RetrofitUtils
package com.bwei.gepeng.http;import java.io.IOException;import okhttp3.HttpUrl;import okhttp3.Interceptor;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import retrofit2.Retrofit;import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;public class RetrofitUtils { private static volatile RetrofitUtils instance; private final Retrofit retrofit; private RetrofitUtils(){ OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Logger()).build(); retrofit = new Retrofit.Builder() .client(client) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .baseUrl("http://120.27.23.105/") .build(); } public static RetrofitUtils getInstance(){ if(instance==null){ synchronized (RetrofitUtils.class){ if(instance==null){ instance=new RetrofitUtils(); } } } return instance; } public ApiService getApiService(){ ApiService apiService = retrofit.create(ApiService.class); return apiService; } class Logger implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); HttpUrl url=original.url().newBuilder() .addQueryParameter("source","android") .build(); //添加请求头 Request request = original.newBuilder() .url(url) .build(); return chain.proceed(request); } }}model
IModel
import java.util.Map;public interface IModel { void getData(Map<String,String> map,String tag);}Model
package com.bwei.gepeng.model;import com.bwei.gepeng.entity.CartBean;import com.bwei.gepeng.entity.GoodsShowBean;import com.bwei.gepeng.entity.MessageBean;import com.bwei.gepeng.http.RetrofitUtils;import com.bwei.gepeng.presenter.NewsPresenter;import java.util.List;import java.util.Map;import io.reactivex.Flowable;public class Model implements IModel{ private NewsPresenter presenter; public Model(NewsPresenter presenter) { this.presenter = presenter; } /*@Override public void getData(Map<String, String> map) { Flowable<MessageBean<List<Newslist>>> flowable = RetrofitUtils.getInstance().getApiService().getNews(map); presenter.get(flowable); }*/ @Override public void getData(Map<String, String> map, String tag) { if(tag.equals("cart")){ Flowable<MessageBean<List<CartBean>>> flowable = RetrofitUtils.getInstance().getApiService().getCart(map); presenter.get2(flowable,tag); }else if(tag.equals("goods")){ Flowable<MessageBean<GoodsShowBean>> flowable = RetrofitUtils.getInstance().getApiService().getNews(map); presenter.get(flowable,tag); } }}
IPresenter
package com.bwei.gepeng.presenter;import java.util.Map;public interface IPresenter { void getData(Map<String,String> map, String tag);}NewsPresenter
package com.bwei.gepeng.presenter;import com.bwei.gepeng.entity.CartBean;import com.bwei.gepeng.entity.GoodsShowBean;import com.bwei.gepeng.entity.MessageBean;import com.bwei.gepeng.model.Model;import com.bwei.gepeng.view.IView;import java.util.List;import java.util.Map;import io.reactivex.Flowable;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.schedulers.Schedulers;import io.reactivex.subscribers.DisposableSubscriber;public class NewsPresenter implements IPresenter{ private IView iView; private DisposableSubscriber<MessageBean<GoodsShowBean>> subscriber; private DisposableSubscriber<MessageBean<List<CartBean>>> subscriber2; public void attachView(IView iView){ this.iView=iView; } @Override public void getData(Map<String, String> map, String tag) { Model model = new Model(this); model.getData(map,tag); } public void detachView(){ if(iView!=null){ iView=null; } if(subscriber!=null){ //如果该资源已被处理,则可一次性返回true。如果没有被处理返回false if(!subscriber.isDisposed()){ subscriber.dispose(); } } if(subscriber2!=null){ //如果该资源已被处理,则可一次性返回true。如果没有被处理返回false if(!subscriber2.isDisposed()){ subscriber2.dispose(); } } } public void get(Flowable<MessageBean<GoodsShowBean>> flowable , final String tag) { subscriber = flowable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSubscriber<MessageBean<GoodsShowBean>>() { @Override public void onNext(MessageBean<GoodsShowBean> listMessageBean) { if (listMessageBean != null) { GoodsShowBean data = listMessageBean.getData(); iView.OnSuccess(data,tag); } } @Override public void onError(Throwable t) { iView.OnFailed(new Exception(t),tag); } @Override public void onComplete() { } }); } public void get2(Flowable<MessageBean<List<CartBean>>> flowable, final String tag) { subscriber2 = flowable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSubscriber<MessageBean<List<CartBean>>>() { @Override public void onNext(MessageBean<List<CartBean>> list) { if (list != null) { List<CartBean> data = list.getData(); if(data!=null){ iView.OnSuccess(data,tag); } } } @Override public void onError(Throwable t) { iView.OnFailed(new Exception(t),tag); } @Override public void onComplete() { } }); }}
阅读全文
0 0
- android 详情页到购物车
- 仿京东详情页跳转到购物车
- 详情页+购物车
- 详情页 购物车
- Android+动画+详情+购物车
- 购物车之跳转到详情页面
- 详情页跳转购物车
- 从详情页点击购物车按钮到主界面的购物车
- 商品详情页+添加购物车
- 购物车详情
- 购物车详情
- 商品详情页面点击跳转到购物车(一)详情界面
- 商品详情界面点击跳转到购物车(二)购物车界面
- 商品详情,购物车,订单
- 仿天猫 购物车(Android studio 仿天猫 详情页面 添加购物车选择 颜色 尺寸demo)
- 仿京东商品详情页(配合购物车使用)
- Android 跳转到通话记录详情页
- 京东购物车搜索,详情.示例
- 频道管理
- java.lang.OutOfMemoryError: PermGen space
- HDOJ 2029 Palindromes _easy version 判断是否是回文
- 字符串比较
- Spring-data-rest 和Spring-data-jpa
- android 详情页到购物车
- Python编程:从入门到实践 5.4.3 练习 5-10 检查用户名
- 【C++的探索路12】继承与派生之高级篇--派生类与赋值运算符=以及多重继承(未完待续)
- cartographer与karto的比较
- EA&UML日拱一卒-0基础学习微信小程序(1)- 开篇
- RevitAPI之深入了解组(Group)和应用组
- 初学者---Android 优秀博客集合
- Android 安卓RecyclerView显示本地视频并播放
- 学习笔记:C++primer 2.4 const限定符