依赖
compile 'io.reactivex.rxjava2:rxjava:2.0.7'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:converter-scalars:2.1.0'
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.facebook.fresco:fresco:0.12.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'org.greenrobot:eventbus:3.1.1'
compile 'com.android.support:design:23.2.1'
网络框架另一篇文章里
MD5和图片缓存和自定义加减另一篇
接下来是MVP分包工作了
首先是View层
登陆
public class MainActivity extends AppCompatActivity implements LoginPresenter.ILoginView {
private long extime=0;
@BindView(R.id.et_name)
EditText etName;
@BindView(R.id.et_pwd)
EditText etPwd;
@BindView(R.id.bt_login)
Button btLogin;
@BindView(R.id.bt_regist)
TextView btRegist;
@BindView(R.id.forgetFive)
TextView forgetFive;
LoginPresenter loginPresenter;
private String name;
private String pwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
loginPresenter=new LoginPresenter(this);
}
@OnClick({R.id.bt_login, R.id.bt_regist})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.bt_login:
name = etName.getText().toString().trim();
pwd = etPwd.getText().toString().trim();
loginPresenter.getData(name, pwd);
break;
case R.id.bt_regist:
startActivity(new Intent(MainActivity.this,RegisterActivity.class));
break;
}
}
@Override
public void success(String s) {
if("登录成功".equals(s)){
LoginMD5.getMD5(name);
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
//跳转到列表页面
Intent intent = new Intent(MainActivity.this, LieBiaoActivity.class);
startActivity(intent);
}else{
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
}
}
@Override
public void failed(String s) {
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
}
@Override
public void getname(String s) {
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
}
@Override
public void getpwd(String s) {
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
}
//销毁防止内存泄漏
@Override
protected void onDestroy() {
super.onDestroy();
loginPresenter.detach();
}
public boolean onKeyDown(int keyCode, KeyEvent event){
if(keyCode== KeyEvent.KEYCODE_BACK){
exit();
return false;
}
return super.onKeyDown(keyCode,event);
}
public void exit(){
if((System.currentTimeMillis()-extime>2000)){
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
extime=System.currentTimeMillis();
}else{
finish();
System.exit(0);
}
}
}
注册
public class RegisterActivity extends AppCompatActivity implements RegistPrestener.IRegistView{
@BindView(R.id.name)
EditText name;
@BindView(R.id.pwd)
EditText pwd;
@BindView(R.id.mpwd)
EditText mpwd;
@BindView(R.id.email)
EditText email;
@BindView(R.id.regist)
Button regist;
private RegistPrestener registPrestener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
ButterKnife.bind(this);
registPrestener=new RegistPrestener(this);
}
@OnClick(R.id.regist)
public void onViewClicked() {
String name1 = name.getText().toString().trim();
String pwd1 = pwd.getText().toString().trim();
String mpwd1 = mpwd.getText().toString().trim();
String email1 = email.getText().toString().trim();
registPrestener.getData(name1,pwd1,mpwd1,email1);
}
@Override
public void success(String s) {
if(("注册成功").equals(s)){
Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
finish();
}else{
Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
}
}
@Override
public void failed(String s) {
Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
}
@Override
public void getname(String s) {
Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
}
@Override
public void getpwd(String s) {
Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
}
@Override
public void email(String s) {
Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
}
@Override
public void confrim(String s) {
Toast.makeText(RegisterActivity.this, s, Toast.LENGTH_SHORT).show();
}
//防止内存泄漏
@Override
protected void onDestroy() {
super.onDestroy();
registPrestener.detach();
}
}
列表
public class LieBiaoActivity extends AppCompatActivity implements LieBiaoPrestener.ILiebiaoView{
@BindView(R.id.rv)
RecyclerView rv;
private LieBiaoPrestener lieBiaoPrestener;
private LieBiaoAdapter lieBiaoAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lie_biao);
ButterKnife.bind(this);
lieBiaoPrestener=new LieBiaoPrestener(this);
lieBiaoPrestener.getdata();
}
@Override
public void success(List<DataDataBean.DataBean> dataBeans) {
rv.setLayoutManager(new LinearLayoutManager(this));
lieBiaoAdapter = new LieBiaoAdapter(LieBiaoActivity.this, dataBeans);
rv.setAdapter(lieBiaoAdapter);
}
//销毁防止内存泄漏
@Override
protected void onDestroy() {
super.onDestroy();
lieBiaoPrestener.detach();
}
}
详情页
public class XiangQingActivity extends AppCompatActivity implements XiangQingPrestener.IXiangqingView,AddCartPrestener.IAddCartView{
@BindView(R.id.videoView)
VideoView videoView;
@BindView(R.id.simpleDetails)
SimpleDraweeView simpleDetails;
@BindView(R.id.title)
TextView title;
@BindView(R.id.price)
TextView price;
@BindView(R.id.addCart)
Button addCart;
private String pid;
private AddCartPrestener addCartPrestener;
private XiangQingPrestener xiangQingPrestener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xiang_qing);
ButterKnife.bind(this);
addCartPrestener=new AddCartPrestener(this);
xiangQingPrestener=new XiangQingPrestener(this);
//得到pid
pid = getIntent().getStringExtra("pid");
xiangQingPrestener.getData(pid);
/*//视频播放
String path = Environment.getExternalStorageDirectory()+"/miniony.mp4";
MediaController mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
videoView.setVideoURI(Uri.parse(path));
videoView.requestFocus();*/
}
@OnClick(R.id.addCart)
public void onViewClicked() {
addCartPrestener.getData(pid);
}
@Override
public void success(DetailsBean.DataBean list) {
//设置数据
String[] split = list.getImages().split("\\|");
simpleDetails.setImageURI(Uri.parse(split[0]));
title.setText(list.getTitle());
price.setText(list.getPrice()+"");
}
@Override
public void success(String s) {
if(s.equals("加购成功")){
Intent intent = new Intent(XiangQingActivity.this,ShopCartActivity.class);
intent.putExtra("pid",pid);
startActivity(intent);
Toast.makeText(XiangQingActivity.this,s,Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(XiangQingActivity.this,s,Toast.LENGTH_SHORT).show();
}
}
//防止内存泄漏
@Override
protected void onDestroy() {
super.onDestroy();
xiangQingPrestener.detach();
}
}
购物车
public class ShopCartActivity extends AppCompatActivity implements ShopCartPrestener.ICartView {
@BindView(R.id.bianji)
TextView bianji;
@BindView(R.id.linear2)
RelativeLayout linear2;
@BindView(R.id.expandView)
ExpandableListView expandView;
@BindView(R.id.checkAll)
CheckBox checkAll;
@BindView(R.id.zprice)
TextView zprice;
@BindView(R.id.zcount)
Button zcount;
@BindView(R.id.linear)
RelativeLayout linear;
private ShopCartPrestener shopCartPrestener;
private ElvAdapter elvAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shop_cart);
ButterKnife.bind(this);
shopCartPrestener = new ShopCartPrestener(this);
shopCartPrestener.getData();
}
@Override
public void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child) {
elvAdapter = new ElvAdapter(ShopCartActivity.this, group, child);
elvAdapter.setChangeListener(new ElvAdapter.ChangeListener() {
@Override
public void setState(boolean flag) {
checkAll.setChecked(flag);
}
@Override
public void setText(String price, String count) {
zcount.setText("结算(" + count + ")");
zprice.setText("总计:" + price + "¥");
}
});
expandView.setAdapter(elvAdapter);
//默认展开
//默认展开
for (int i = 0; i < group.size(); i++) {
expandView.expandGroup(i);
}
}
@OnClick({R.id.checkAll, R.id.zcount})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.checkAll:
elvAdapter.checkedAll(checkAll.isChecked());
break;
case R.id.zcount:
Intent intent = new Intent(ShopCartActivity.this,DingGoodsActivity.class);
startActivity(intent);
break;
}
}
}
订单
public class DingGoodsActivity extends AppCompatActivity {
@BindView(R.id.imageView)
ImageView imageView;
@BindView(R.id.tabLayout)
TabLayout tabLayout;
@BindView(R.id.viewPager)
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ding_goods);
ButterKnife.bind(this);
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
private String[] mTitles = new String[]{"全部", "待支付", "已支付", "已取消"};
@Override
public Fragment getItem(int position) {
if(position==1){
return new TwoFragment();
}else if(position==2){
return new ThreeFragment();
}else if(position==3){
return new FourFragment();
}
return new OneFragment();
}
@Override
public int getCount() {
return mTitles.length;
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles[position];
}
});
tabLayout.setupWithViewPager(viewPager);
}
@OnClick(R.id.imageView)
public void onViewClicked() {
MyPopupWindow.showPopupWindow(viewPager,DingGoodsActivity.this,imageView);
}
}
接下来就到了Model层了
public class LoginModel {
public void getData(String name, String pwd, final ILoginModel iLoginModel){
Map<String,String> map=new HashMap<>();
map.put("mobile",name);
map.put("password",pwd);
RetrofitManager.get("user/login",map, new BaseObserver<LoginBean>() {
@Override
public void success(LoginBean loginBean) {
if(iLoginModel!=null){
iLoginModel.success(loginBean);
}
}
@Override
public void failure(int code) {
}
});
}
public interface ILoginModel {
void success(LoginBean loginBean);
}
}
public class RegistModel {
public void getData(String name, String pwd, final IRgistModel iRgistModel){
Map<String ,String> map=new HashMap<>();
map.put("mobile",name);
map.put("password",pwd);
RetrofitManager.get("user/reg",map, new BaseObserver<RegisterBean>() {
@Override
public void success(RegisterBean registerBean) {
if(iRgistModel!=null){
iRgistModel.success(registerBean);
}
}
@Override
public void failure(int code) {
}
});
}
public interface IRgistModel{
void success(RegisterBean registerBean);
}
}
public class LieBiaoModel {
public void getData(final ILiebiaoModel iLiebiaoModel){
Map<String ,String> map=new HashMap<>();
map.put("pscid","1");
map.put("page","1");
map.put("source","android");
RetrofitManager.get("product/getProducts",map, new BaseObserver<DataDataBean>() {
@Override
public void success(DataDataBean dataDataBean) {
if(iLiebiaoModel!=null){
iLiebiaoModel.success(dataDataBean);
}
}
@Override
public void failure(int code) {
}
});
}
public interface ILiebiaoModel{
void success(DataDataBean dataDataBean);
}
}
public class XiangQingModel {
public void getData(String pid, final IXiangqingModel iXiangqingModel){
Map<String,String> map = new HashMap<>();
map.put("pid",pid);
map.put("source","android");
RetrofitManager.get("product/getProductDetail",map, new BaseObserver<DetailsBean>() {
@Override
public void success(DetailsBean detailsBean) {
if(iXiangqingModel!=null){
iXiangqingModel.success(detailsBean);
}
}
@Override
public void failure(int code) {
}
});
}
public interface IXiangqingModel {
void success(DetailsBean deatails);
}
}
public class ShopCartModel {
public void getData(final IShopCart iCartModel){
Map<String,String> map=new HashMap<>();
map.put("uid","11738");
map.put("source","android");
RetrofitManager.get("product/getCarts",map, new BaseObserver<CartBean>() {
@Override
public void success(CartBean cartBean) {
if(iCartModel!=null){
iCartModel.success(cartBean);
}
}
@Override
public void failure(int code) {
}
});
}
public interface IShopCart {
void success(CartBean cartBean);
}
}
public class DingModel {
//订单的数据
public void getData(String page,String status, final IDingModel dingModuleListener){
Map<String, String> map = new HashMap<>();
map.put("uid","71");
map.put("page",page);
map.put("status",status);
//http://120.27.23.105/product/getOrders?uid=71&status=1
map.put("source","android");
RetrofitManager.get("product/getOrders", map, new BaseObserver<DingDBean>() {
@Override
public void success(DingDBean dingDBean) {
if(dingModuleListener!=null){
dingModuleListener.success(dingDBean);
}
}
@Override
public void failure(int code) {
}
});
}
public interface IDingModel{
void success(DingDBean dingDBean);
}
}
然后是P层
public class LoginPresenter {
ILoginView iLoginView;
LoginModel loginModel;
public LoginPresenter(ILoginView iLoginView) {
this.iLoginView = iLoginView;
loginModel=new LoginModel();
}
public void getData(String name,String pwd){
//判断用户名为空
if(TextUtils.isEmpty(name)){
if(iLoginView!=null){
iLoginView.getname("用户名不能为空");
return;
}
}
//判断密码是否为空
if(TextUtils.isEmpty(pwd)){
if(iLoginView!=null){
iLoginView.getpwd("密码不能为空");
}
}
//调用M层数据
loginModel.getData(name, pwd, new LoginModel.ILoginModel() {
@Override
public void success(LoginBean loginBean) {
if(iLoginView!=null){
iLoginView.success(loginBean.getMsg());
}
}
});
}
//内存泄漏
public void detach(){
iLoginView=null;
}
public interface ILoginView {
void success(String s);
void failed(String s);
void getname(String s);
void getpwd(String s);
}
}
public class RegistPrestener {
IRegistView iRegistView;
RegistModel registModel;
public RegistPrestener(IRegistView iRegistView) {
this.iRegistView = iRegistView;
registModel=new RegistModel();
}
public void getData(String name,String pwd,String mpwd,String email){
//判断用户名不能为空
if(TextUtils.isEmpty(name)){
if(iRegistView!=null){
iRegistView.getname("用户名不能为空");
return;
}
}
//判断密码不能为空
if(TextUtils.isEmpty(pwd)){
if(iRegistView!=null){
iRegistView.getpwd("密码不能为空");
return;
}
//判断输入二次密码
if(TextUtils.isEmpty(mpwd)){
if(iRegistView!=null){
iRegistView.confrim("确认密码不能为空");
return;
}
if(!mpwd.equals(pwd)){
if(iRegistView!=null){
iRegistView.confrim("两次密码不一样");
return;
}
}
}
boolean email1=isEmail(email);
if(!email1){
if(iRegistView!=null){
iRegistView.email("邮箱格式不正确");
return;
}
}
};
//调用m层数据
registModel.getData(name,pwd, new RegistModel.IRgistModel() {
@Override
public void success(RegisterBean registerBean) {
if(iRegistView!=null){
iRegistView.success(registerBean.getMsg());
}
}
});
}
//防止内存泄漏
public void detach(){
iRegistView=null;
}
//邮箱
public boolean isEmail(String email){
String str = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
Pattern p = Pattern.compile(str);
Matcher m = p.matcher(email);
return m.matches();
}
public interface IRegistView {
void success(String s);
void failed(String s);
void getname(String s);
void getpwd(String s);
void email(String s);
void confrim(String s);
}
}
public class LieBiaoPrestener {
LieBiaoModel lieBiaoModel;
ILiebiaoView iLiebiaoView;
public LieBiaoPrestener(ILiebiaoView iLiebiaoView) {
this.iLiebiaoView = iLiebiaoView;
lieBiaoModel=new LieBiaoModel();
}
//数据传到view层
public void getdata(){
lieBiaoModel.getData(new LieBiaoModel.ILiebiaoModel() {
@Override
public void success(DataDataBean dataDataBean) {
if(iLiebiaoView!=null){
iLiebiaoView.success(dataDataBean.getData());
}
}
});
}
public void detach(){
iLiebiaoView=null;
}
public interface ILiebiaoView{
void success(List<DataDataBean.DataBean> dataBeans);
}
}
public class XiangQingPrestener {
IXiangqingView iXiangqingView;
XiangQingModel xiangQingModel;
public XiangQingPrestener(IXiangqingView iXiangqingView) {
this.iXiangqingView = iXiangqingView;
xiangQingModel=new XiangQingModel();
}
public void getData(String pid){
xiangQingModel.getData(pid, new XiangQingModel.IXiangqingModel() {
@Override
public void success(DetailsBean deatails) {
if(iXiangqingView!=null){
iXiangqingView.success(deatails.getData());
}
}
});
}
public interface IXiangqingView{
void success(DetailsBean.DataBean list);
}
public void detach(){
iXiangqingView=null;
}
}
public class ShopCartPrestener {
ShopCartModel cartModel;
ICartView iCartView;
public ShopCartPrestener(ICartView iCartView) {
this.iCartView = iCartView;
cartModel=new ShopCartModel();
}
public void getData(){
cartModel.getData(new ShopCartModel.IShopCart() {
@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(iCartView!=null){
iCartView.success(group,child);
}
}
});
}
public interface ICartView {
void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child);
}
}
public class DingPrestener {
DingModel dingModel=new DingModel();
public void getData(String page,String status, final IDingView dingPresenterListener){
dingModel.getData(page,status, new DingModel.IDingModel() {
@Override
public void success(DingDBean dingDBean) {
if(dingPresenterListener!=null){
dingPresenterListener.success(dingDBean);
}
}
});
}
public interface IDingView{
void success(DingDBean dingDBean);
}
}
订单的四个Fragment页面
public class FourFragment extends Fragment{
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.four_fragment,container,false);
recyclerView = view.findViewById(R.id.recyclerFragment);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
DingPrestener dingPresenter = new DingPrestener();
dingPresenter.getData("1","2", new DingPrestener.IDingView() {
@Override
public void success(DingDBean dingDBean) {
//设置适配器
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
DingAdapter myDingAdapter = new DingAdapter(getActivity(),dingDBean.getData());
recyclerView.setAdapter(myDingAdapter);
}
});
}
}
public class OneFragment extends Fragment {
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.one_fragment,container,false);
recyclerView = view.findViewById(R.id.recyclerFragment);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//设置数据
DingPrestener dingPrestener=new DingPrestener();
Map<String, String> map = new HashMap<>();
map.put("uid","71");
map.put("page","1");
map.put("source","android");
RetrofitManager.get("product/getOrders",map, new BaseObserver<DingDBean>() {
@Override
public void success(DingDBean dingDBean) {
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
DingAdapter dingAdapter=new DingAdapter(getActivity(),dingDBean.getData());
recyclerView.setAdapter(dingAdapter);
}
@Override
public void failure(int code) {
}
});
}
}
public class ThreeFragment extends Fragment {
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.three_fragment,container,false);
recyclerView = view.findViewById(R.id.recyclerFragment);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
DingPrestener dingPresenter = new DingPrestener();
dingPresenter.getData("1","1", new DingPrestener.IDingView() {
@Override
public void success(DingDBean dingDBean) {
//设置适配器
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
DingAdapter myDingAdapter = new DingAdapter(getActivity(),dingDBean.getData());
recyclerView.setAdapter(myDingAdapter);
}
});
}
}
public class TwoFragment extends Fragment {
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.two_fragment,container,false);
recyclerView = view.findViewById(R.id.recyclerFragment);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
DingPrestener dingPrestener=new DingPrestener();
dingPrestener.getData("1", "0", new DingPrestener.IDingView() {
@Override
public void success(DingDBean dingDBean) {
//设置适配器
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
DingAdapter dingAdapter=new DingAdapter(getActivity(),dingDBean.getData());
recyclerView.setAdapter(dingAdapter);
}
});
}
}
bean类太多了没办法,自己解析吧
接下来是适配器
订单的适配器
public class DingAdapter extends RecyclerView.Adapter{
Context context;
List<DingDBean.DataBean> data;
public DingAdapter(Context context, List<DingDBean.DataBean> data) {
this.context = context;
this.data = data;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.fragment_item,null);
return new ViewHolder1(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
final ViewHolder1 holder1 = (ViewHolder1) holder;
//设置数据
holder1.textView.setText(data.get(position).getTitle());
holder1.price.setText(data.get(position).getPrice()+"");
holder1.time.setText(data.get(position).getCreatetime()+"");
//根据不同的状态动态的设置
int status = data.get(position).getStatus();
if(status==0){
holder1.textView1.setText("待支付");
holder1.btn.setText("待支付");
}else if(status==1){
holder1.textView1.setText("已支付");
holder1.btn.setText("已支付");
}else{
holder1.textView1.setText("已取消");
holder1.btn.setText("已取消");
}
//点击改变按钮事件
holder1.btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String btn = holder1.btn.getText().toString();
String text = holder1.textView1.getText().toString();
if(btn.equals("待支付")){
holder1.btn.setText("已取消");
holder1.textView1.setText("已取消");
}else if(btn.equals("已取消")){
Toast.makeText(context,"已取消",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context,"已支付",Toast.LENGTH_SHORT).show();
}
}
});
//点击删除按钮事件
holder1.relativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//弹出窗
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
alertDialog.setTitle("警告");
alertDialog.setMessage("确定删除"+data.get(position).getTitle()+"吗?");
alertDialog.setNegativeButton("取消", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
data.remove(position);
notifyDataSetChanged();
}
});
alertDialog.show();
}
});
}
@Override
public int getItemCount() {
return data.size();
}
class ViewHolder1 extends RecyclerView.ViewHolder {
TextView textView;
TextView textView1;
RelativeLayout relativeLayout;
Button btn;
TextView price;
TextView time;
public ViewHolder1(View itemView) {
super(itemView);
textView=itemView.findViewById(R.id.titleView);
textView1 = itemView.findViewById(R.id.textView);
price = itemView.findViewById(R.id.price);
time = itemView.findViewById(R.id.time);
btn = itemView.findViewById(R.id.btn);
relativeLayout = itemView.findViewById(R.id.relative);
}
}
}
购物车适配器
public class ElvAdapter extends BaseExpandableListAdapter {
Context context;
List<CartBean.DataBean> group;
List<List<CartBean.DataBean.ListBean>> child;
private Holder1 holder1;
private Holder2 holder2;
public ElvAdapter(Context context, List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child) {
this.context = context;
this.group = group;
this.child = child;
}
@Override
public int getGroupCount() {
return group.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return child.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
return group.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return child.get(groupPosition).get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if(convertView==null){
convertView = LayoutInflater.from(context).inflate(R.layout.item_expandable_listview, null);
holder1 = new Holder1();
holder1.checkBox = convertView.findViewById(R.id.groupChecked);
holder1.textview = convertView.findViewById(R.id.groupTitle);
convertView.setTag(holder1);
}else{
holder1 = (Holder1) convertView.getTag();
}
//设置显示数据
holder1.textview.setText(group.get(groupPosition).getSellerName());
holder1.checkBox.setChecked(group.get(groupPosition).isgChecked());
//设置一级标题的点击事件
holder1.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean b = !group.get(groupPosition).isgChecked();
Toast.makeText(context,b+"",Toast.LENGTH_SHORT).show();
group.get(groupPosition).setgChecked(b);
//拿到你点击孩子的父亲
List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition);
//遍历看看他有几个孩子
for (int i=0;i<listBeans.size();i++){
listBeans.get(i).setcChecked(group.get(groupPosition).isgChecked());
}
changeListener.setState(isGroup());
notifyDataSetChanged();
sum();
}
});
return convertView;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, final boolean isLastChild, View convertView, ViewGroup parent) {
if(convertView==null){
convertView = LayoutInflater.from(context).inflate(R.layout.item_listview, null);
holder2 = new Holder2();
holder2.imageView = convertView.findViewById(R.id.simpleDraw);
holder2.checkBox = convertView.findViewById(R.id.childChecked);
holder2.title = convertView.findViewById(R.id.childTitle);
holder2.miaoshu= convertView.findViewById(R.id.miaoShu);
holder2.price = convertView.findViewById(R.id.childPrice);
holder2.yprice = convertView.findViewById(R.id.childPriceY);
holder2.linearLayout = convertView.findViewById(R.id.linearLayoutItem);
holder2.customLinearLayout = convertView.findViewById(R.id.customLinearLayout);
holder2.bt2=convertView.findViewById(R.id.bt_del);
convertView.setTag(holder2);
}else{
holder2 = (Holder2) convertView.getTag();
}
final CartBean.DataBean.ListBean listBean = child.get(groupPosition).get(childPosition);
//设置显示数据
holder2.checkBox.setChecked(listBean.iscChecked());
holder2.title.setText(listBean.getTitle());
holder2.price.setText("¥"+listBean.getPrice());
holder2.yprice.setText("¥"+listBean.getBargainPrice());
holder2.customLinearLayout.setText(listBean.getNum()+"");
//中划线
holder2.yprice.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG);
// 设置中划线并加清晰
holder2.yprice.setPaintFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG);
holder2.miaoshu.setText(listBean.getSubhead());
String[] split = listBean.getImages().split("\\|");
holder2.imageView.setImageURI(Uri.parse(split[0]));
holder2.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition);
boolean b = !listBeans.get(childPosition).iscChecked();
listBeans.get(childPosition).setcChecked(b);
boolean isno = isChildChange(listBeans);
//设置一级的状态
group.get(groupPosition).setgChecked(isno);
changeListener.setState(isChild());
notifyDataSetChanged();
sum();
}
});
//加减号的点击事件
holder2.customLinearLayout.getCount(new CustomLinearLayout.CountListener() {
@Override
public void setCount(int i) {
listBean.setNum(i);
sum();
}
});
//删除事件
/* holder2.bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
List<CartBean.DataBean.ListBean> list = group.get(groupPosition).getList();
for (int i=0;i<list.size();i++) {
if (list.size() > 0) {
list.remove(i);
}
}
if(list.size()==0){
child.remove(childPosition);
group.remove(groupPosition);
}
notifyDataSetChanged();
}
});*/
holder2.bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//其实就是删除集合
List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition);
if (listBeans.size() > 0) {
listBeans.remove(childPosition);
}
if (listBeans.size() == 0) {
child.remove(groupPosition);
group.remove(groupPosition);
}
//刷新列表
notifyDataSetChanged();
}
});
return convertView;
}
//计算的方法
public void sum(){
double price = 0;
int count = 0;
for (int i=0;i<group.size();i++){
List<CartBean.DataBean.ListBean> list = group.get(i).getList();
for (int j=0;j<list.size();j++){
if(list.get(j).iscChecked()){
price +=list.get(j).getPrice()*list.get(j).getNum();
count +=list.get(j).getNum();
}
}
}
notifyDataSetChanged();
//接口回调
if(changeListener!=null) {
changeListener.setText(price + "", count + "");
}
}
ChangeListener changeListener;
public void setChangeListener(ChangeListener changeListener) {
this.changeListener = changeListener;
}
//接口传值,去改变全选的状态,设置商品的数量价格
public interface ChangeListener{
void setState(boolean flag);
void setText(String price,String count);
}
//子类点击改变全选状态
public boolean isChild(){
for (int i=0;i<group.size();i++){
List<CartBean.DataBean.ListBean> list = group.get(i).getList();
for (int j=0;j<list.size();j++){
if(!child.get(i).get(j).iscChecked()){
return false;
}
}
}
return true;
}
//父类点击改变全选的状态
public boolean isGroup(){
for (int i=0;i<group.size();i++){
if(!group.get(i).isgChecked()){
return false;
}
}
return true;
}
//设置全选
public void checkedAll(boolean flag){
if(flag){
for (int i=0;i<group.size();i++){
List<CartBean.DataBean.ListBean> list = group.get(i).getList();
group.get(i).setgChecked(true);
for (int j=0;j<list.size();j++){
child.get(i).get(j).setcChecked(true);
}
}
}else{
for (int i=0;i<group.size();i++){
List<CartBean.DataBean.ListBean> list = group.get(i).getList();
group.get(i).setgChecked(false);
for (int j=0;j<list.size();j++){
child.get(i).get(j).setcChecked(false);
}
}
}
notifyDataSetChanged();
sum();
}
//如果有意子类没选中就将父类的状态改为true
public boolean isChildChange( List<CartBean.DataBean.ListBean> listBeans){
for (int i=0;i<listBeans.size();i++){
if(!listBeans.get(i).iscChecked()){
return false;
}
}
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
class Holder1{
CheckBox checkBox;
TextView textview;
}
class Holder2{
LinearLayout linearLayout;
CustomLinearLayout customLinearLayout;
CheckBox checkBox;
SimpleDraweeView imageView;
TextView title;
TextView miaoshu;
TextView price;
TextView yprice;
Button bt2;
}
}
列表适配器
public class LieBiaoAdapter extends RecyclerView.Adapter{
private Context context;
private 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 LieBiaoAdapter(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.liebiao_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 view) {
Intent intent = new Intent(context,XiangQingActivity.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.title_t);
price = itemView.findViewById(R.id.price);
linearLayout = itemView.findViewById(R.id.linear);
}
}
}
Xml文件太多了
订单Ac的
<LinearLayout 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"
android:orientation="vertical"
tools:context="com.example.administrator.view.DingGoodsActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
>
<TextView
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="订单页面"
/>
<ImageView
android:src="@mipmap/ic_launcher"
android:layout_width="25dp"
android:layout_height="25dp"
android:id="@+id/imageView"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000"
/>
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="50dp"
>
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</android.support.v4.view.ViewPager>
</LinearLayout>
列表Ac的
<LinearLayout 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:orientation="vertical"
android:layout_height="match_parent"
tools:context="com.example.administrator .view.LieBiaoActivity">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rv"></android.support.v7.widget.RecyclerView>
</LinearLayout>
登录Ac的
<LinearLayout 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:orientation="vertical"
android:layout_height="match_parent"
tools:context="com.example.administrator 1.view.MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="淘宝登录"
android:textColor="#000"
android:textSize="20sp"
android:layout_centerInParent="true"
/>
</RelativeLayout>
<LinearLayout
android:layout_marginTop="60dp"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="账号"
/>
<EditText
android:id="@+id/et_name"
android:layout_marginRight="20dp"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="请输入你的账号"
/>
</LinearLayout>
<LinearLayout
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码"
/>
<EditText
android:id="@+id/et_pwd"
android:layout_marginRight="20dp"
android:layout_width="250dp"
android:inputType="textPassword"
android:layout_height="wrap_content"
android:hint="请输入你的密码"
/>
</LinearLayout>
<Button
android:id="@+id/bt_login"
android:textColor="#888888"
android:layout_gravity="center_horizontal"
android:background="@drawable/shape_activity"
android:layout_marginTop="30dp"
android:layout_width="350dp"
android:layout_height="50sp"
android:textSize="20sp"
android:text="登录"
/>
<RelativeLayout
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/bt_regist"
android:padding="10dp"
android:text="注册账号"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/forgetFive"
android:padding="10dp"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="忘记密码"
/>
</RelativeLayout>
</LinearLayout>
注册Ac的
<LinearLayout 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"
android:orientation="vertical"
tools:context="com.example.administrator. .view.RegisterActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="淘宝注册"
android:textColor="#000"
android:textSize="20sp"
android:layout_centerInParent="true"
/>
</RelativeLayout>
<LinearLayout
android:layout_marginTop="60dp"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="账号"
/>
<EditText
android:id="@+id/name"
android:layout_marginRight="20dp"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="请输入你的账号"
/>
</LinearLayout>
<LinearLayout
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码"
/>
<EditText
android:id="@+id/pwd"
android:layout_marginRight="20dp"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="请输入你的密码"
/>
</LinearLayout>
<LinearLayout
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确认密码"
/>
<EditText
android:id="@+id/mpwd"
android:layout_marginRight="20dp"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="请再次输入你的密码"
/>
</LinearLayout>
<LinearLayout
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="邮箱"
/>
<EditText
android:id="@+id/email"
android:layout_marginRight="20dp"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="请输入你的邮箱"
/>
</LinearLayout>
<Button
android:id="@+id/regist"
android:textColor="#888888"
android:layout_gravity="center_horizontal"
android:background="@drawable/shape_activity"
android:layout_marginTop="30dp"
android:layout_width="350dp"
android:layout_height="50sp"
android:textSize="20sp"
android:text="注册"
/>
</LinearLayout>
购物车Ac的
<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="com.example.administrator.view.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_centerVertical="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>
</RelativeLayout>
详情Ac的
<RelativeLayout 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"
tools:context="com.example.administrator.view.XiangQingActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<VideoView
android:layout_width="match_parent"
android:layout_height="180dp"
android:id="@+id/videoView"
/>
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/simpleDetails"
android:layout_width="match_parent"
android:layout_height="200dp" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="标题"
android:textSize="20sp"
/>
<TextView
android:textColor="#FEB016"
android:id="@+id/price"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="价格"
android:textSize="20sp"
/>
</LinearLayout>
<LinearLayout
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content">
<ImageView
android:layout_width="0dp"
android:src="@mipmap/ic_launcher"
android:layout_height="30dp"
android:layout_weight="1"
/>
<ImageView
android:layout_width="0dp"
android:src="@mipmap/ic_launcher"
android:layout_height="30dp"
android:layout_weight="1"
/>
<ImageView
android:layout_width="0dp"
android:src="@mipmap/ic_launcher"
android:layout_height="30dp"
android:layout_weight="1"
/>
</LinearLayout>
<LinearLayout
android:layout_marginLeft="25dp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/addCart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:background="#ff0"
android:text="加入购物车"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:background="#f00"
android:text="立即购买"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
自定义加减的
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<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>
fragment适配的
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/relative"
android:orientation="horizontal"
android:layout_height="match_parent">
<LinearLayout
android:layout_centerVertical="true"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="sada"
android:id="@+id/titleView"
/>
<TextView
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="价格"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/price"
/>
<TextView
android:text="时间"
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:textColor="#f00"
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="待支付"
/>
<Button
android:layout_marginTop="10dp"
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="待支付"
/>
</LinearLayout>
</RelativeLayout>
购物车父
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<CheckBox
android:id="@+id/groupChecked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/groupTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="标题"
/>
</LinearLayout>
购物车子
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:orientation="horizontal"
android:id="@+id/linearLayoutItem"
android:gravity="center_vertical"
android:layout_height="match_parent">
<CheckBox
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/childChecked"
/>
<com.facebook.drawee.view.SimpleDraweeView
android:layout_marginLeft="5dp"
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/simpleDraw"
fresco:placeholderImage="@mipmap/ic_launcher"
fresco:retryImage="@mipmap/ic_launcher"
/>
<LinearLayout
android:layout_marginLeft="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:textSize="16sp"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/childTitle"
android:text="标题"
/>
<TextView
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="描述"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/miaoShu"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:layout_marginLeft="20dp"
android:id="@+id/bt_del"/>
<LinearLayout
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:textSize="16sp"
android:textColor="#FCB950"
android:text="价格"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/childPrice"
/>
<TextView
android:text="优惠"
android:id="@+id/childPriceY"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
/>
<com.example.administrator.yuekao1.util.CustomLinearLayout
android:id="@+id/customLinearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.example.administrator.yuekao1.util.CustomLinearLayout>>
</LinearLayout>
</LinearLayout>
</LinearLayout>
列表的
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:id="@+id/linear"
android:gravity="center_vertical"
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/title_t"
/>
</LinearLayout>
</LinearLayout>
popwindou
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="vertical"
android:paddingBottom="2dp">
<TextView
android:textSize="20sp"
android:id="@+id/pop_computer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="待支付"/>
<TextView
android:textSize="20sp"
android:id="@+id/pop_financial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="已支付"/>
/>
<TextView
android:textSize="20sp"
android:id="@+id/pop_manage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="已取消"/>
</LinearLayout>
四个Fragment的自己敲,每个里面就是一个Recylerview,
实在是太多了太累了,就写到这里。