files = new ArrayList<>();
+ files.addAll(additionImageWrapper.getImageList());
+ for (int i = 0; i < images.size(); i++) {
+ files.add(new File(images.get(i)));
+ }
+ additionImageWrapper.setData(files);
+
+ }
+ }
+
+ private void selectImage() {
+ ImageSelector.builder()
+ .useCamera(false) // 设置是否使用拍照
+ .setSingle(false) //设置是否单选
+ .setViewImage(true) //是否点击放大图片查看,,默认为true
+ .setMaxSelectCount(additionImageWrapper.getRemainCount()) // 图片的最大选择数量,小于等于0时,不限数量。
+ .start(AddDiscoveryActivity.this, REQUEST_CODE_SELECT_PICTURE); // 打开相册
+ }
+
+
+ /*
+ * 检查访问相册权限
+ * */
+ private void checkAlbumPermission() {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ selectImage();
+ return;
+ }
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ //权限还没有授予,需要在这里写申请权限的代码
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);
+ }
+
+ } else {
+ selectImage();
+ }
+ }
+}
diff --git a/app/src/main/java/com/sl/house_property/discovery/AdditionImageWrapper.java b/app/src/main/java/com/sl/house_property/discovery/AdditionImageWrapper.java
new file mode 100644
index 0000000..924a6ca
--- /dev/null
+++ b/app/src/main/java/com/sl/house_property/discovery/AdditionImageWrapper.java
@@ -0,0 +1,231 @@
+package com.sl.house_property.discovery;
+
+import android.content.Context;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
+import com.sl.house_property.R;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by: xudiwei
+ *
+ * on: 2017/4/13.
+ *
+ * 描述:用于处理带有可添加item的列表布局,可用于动态创建时的图片内容的显示操作布局
+ *
+ * ------
+ * | |
+ * | + |
+ * | |
+ * ------
+ *
+ * 用例 :
+ *
+ * AdditionImageWrapper additionImageWrapper = new AdditionImageWrapper(Context, RecyclerView);
+ * additionImageWrapper.wrap(new AdditionImageWrapper.OnAdditionLayoutItemClick() {
+ *
+ * @Override public void onAdditionItemClick() {
+ * //添加item被点击
+ * }
+ * @Override public void onImageItemClick(int position) {
+ * //普通图片被点击
+ * }
+ * });
+ *
+ * //设置图片的数据
+ * additionImageWrapper.setData(List);
+ *
+ * //设置最多显示的图片数量(默认为9张)
+ * additionImageWrapper.setLimit(int);
+ *
+ * //设置RecyclerView的列(默认为4列)
+ * addition.setRow(int);
+ */
+
+public class AdditionImageWrapper {
+ private static final String TAG = "AdditionImageWrapper";
+ /*默认图片数量为4张*/
+ public static final int DEFAULT_COUNT = 9;
+ /*默认图片的列数为4格*/
+ public static final int DEFAULT_ROW = 4;
+ /*图片数据有存在包含添加item的数据的,(当图片的数量小于mImageCountLimit时)*/
+ private List mList = new ArrayList<>();
+ /*直实通过setData设置进来的图片*/
+ private List mRealList = new ArrayList<>();
+ //剩下几张 mImageCountLimit - list
+ private int mRemainCount = DEFAULT_COUNT;
+
+ private Context mContext;
+ private RecyclerView mRecyclerView;
+ private int mImageCountLimit = DEFAULT_COUNT;
+ private int mRecyclerViewRow = DEFAULT_ROW;
+ private OnAdditionLayoutItemClick mItemClick;
+ private CreateDynamicRVAdapter mAdapter;
+
+
+ public AdditionImageWrapper(Context context, RecyclerView recyclerView) {
+ this.mContext = context;
+ this.mRecyclerView = recyclerView;
+ }
+
+ public void setLimit(int imageCountLimit) {
+ this.mImageCountLimit = imageCountLimit;
+ this.mRemainCount = imageCountLimit;
+ }
+
+ public void setRow(int recyclerViewRow) {
+ this.mRecyclerViewRow = recyclerViewRow;
+ }
+
+ public int getRemainCount() {
+ return mRemainCount;
+ }
+
+ public List getImageList() {
+ return mRealList;
+ }
+
+
+ public void setData(List list) {
+ if (list.size() > mImageCountLimit) {
+ throw new IllegalArgumentException(" list size is 大于limit, limit是:" + mImageCountLimit + " 你给的是: " + list.size());
+ }
+ mRealList.clear();
+
+ mRealList.addAll(list);
+ mRemainCount = mImageCountLimit - list.size();
+
+ this.mList.clear();
+ this.mList.addAll(list);
+ if (this.mList.size() < mImageCountLimit) {
+ addDefaultItem();
+ }
+ if (null != mAdapter) {
+ mAdapter.notifyDataSetChanged();
+ }
+ }
+
+ /**
+ * 包裹
+ *
+ * @param itemClick
+ */
+ public void wrap(OnAdditionLayoutItemClick itemClick) {
+ this.mItemClick = itemClick;
+ initRecyclerView();
+ }
+
+ /**
+ * 添加珍上空的Item数据
+ */
+ private void addDefaultItem() {
+ mList.add(null);
+ }
+
+ private void initRecyclerView() {
+ addDefaultItem();
+ GridLayoutManager manager = new GridLayoutManager(mContext, mRecyclerViewRow);
+ mAdapter = new CreateDynamicRVAdapter(mContext, mList);
+ mRecyclerView.setLayoutManager(manager);
+ mRecyclerView.setAdapter(mAdapter);
+
+ }
+
+
+ public interface OnAdditionLayoutItemClick {
+ /**
+ * 添加图片的item被点击
+ */
+ void onAdditionItemClick();
+
+ /**
+ * 图片item被点击
+ *
+ * @param position
+ */
+ void onImageItemClick(int position);
+ }
+
+
+ /**
+ * RecyclerView适配器
+ */
+ private class CreateDynamicRVAdapter extends RecyclerView.Adapter {
+ private Context mContext;
+ private List mList;
+
+ CreateDynamicRVAdapter(Context context, List list) {
+ this.mContext = context;
+ this.mList = list;
+ }
+
+ @Override
+ public CreateDynamicRVAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(mContext).inflate(R.layout.item_rv_create_dynamic, parent, false);
+ return new ViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(CreateDynamicRVAdapter.ViewHolder holder, int position) {
+ File path = mList.get(position);
+ if (position == mList.size() - 1 && null == path) {
+ holder.ivImage.setImageResource(R.mipmap.icon_add);
+ } else {
+ // holder.ivImage.setImageResource(R.mipmap.ic_avatar_default);
+ // mContext.(mContext, holder.ivImage, path);
+ // ImageLoaderKt.loadToFile(mContext,holder.ivImage,path);
+ RequestOptions requestOptions = new RequestOptions();
+ requestOptions.placeholder(R.mipmap.icon_default_rectangle);
+ requestOptions.error(R.mipmap.icon_default_rectangle);
+ requestOptions.skipMemoryCache(false);
+ Glide.with(mContext).load(path).apply(requestOptions).into(holder.ivImage);
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return mList.size();
+ }
+
+ /**
+ * ViewHolder
+ */
+ class ViewHolder extends RecyclerView.ViewHolder {
+ ImageView ivImage;
+
+ public ViewHolder(View itemView) {
+ super(itemView);
+ ivImage = (ImageView) itemView.findViewById(R.id.riv_img);
+ if (null == mItemClick) {
+ return;
+ }
+
+ //设置点击事件
+ itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ int position = ViewHolder.this.getLayoutPosition();
+ File path = mList.get(position);
+ if (null == path && position == mList.size() - 1) {
+ mItemClick.onAdditionItemClick();
+ } else {
+ mItemClick.onImageItemClick(position);
+ }
+ }
+ });
+ }
+ }
+ }
+
+
+}
diff --git a/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java b/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java
index 9aa070c..05bded5 100644
--- a/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java
+++ b/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java
@@ -1,6 +1,7 @@
package com.sl.house_property.discovery;
import android.app.ProgressDialog;
+import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
@@ -100,6 +101,14 @@ public class DiscoveryFragment extends BaseFragment im
intRecycleView();
MainTabActivity activity = (MainTabActivity) getActivity();
activity.registerMyOnTouchListener(this);
+ mDataBinding.ivAdd.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(getContext(), AddDiscoveryActivity.class);
+ intent.putExtra("type",0);
+ startActivity(intent);
+ }
+ });
}
@Override
diff --git a/app/src/main/java/com/sl/house_property/discovery/ImageViewerAdapter.java b/app/src/main/java/com/sl/house_property/discovery/ImageViewerAdapter.java
new file mode 100644
index 0000000..a0f1e22
--- /dev/null
+++ b/app/src/main/java/com/sl/house_property/discovery/ImageViewerAdapter.java
@@ -0,0 +1,99 @@
+package com.sl.house_property.discovery;
+
+import android.content.Context;
+import android.support.v4.view.PagerAdapter;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
+import com.github.chrisbanes.photoview.PhotoView;
+import com.sl.house_property.R;
+
+import java.util.List;
+
+
+/**
+ * 日期:2017.01.06
+ *
+ * 作者:xudiwei
+ *
+ * 描述::图片预览/删除页面的适配器
+ */
+public class ImageViewerAdapter extends PagerAdapter {
+
+ private static final String TAG = "ImageViewerAdapter";
+
+ private Context mContext;
+ private List mList;
+ private OnImageLongClickListener mImageLongClickListener;
+
+ public ImageViewerAdapter(Context context, List list) {
+ mContext = context;
+ mList = list;
+ }
+
+ @Override
+ public int getCount() {
+ return mList.size();
+ }
+
+ @Override
+ public boolean isViewFromObject(View view, Object object) {
+ return view == object;
+ }
+
+ @Override
+ public Object instantiateItem(ViewGroup container, final int position) {
+ View view = LayoutInflater.from(mContext).inflate(R.layout.item_preview, container, false);
+ PhotoView photoView = (PhotoView) view.findViewById(R.id.photoView);
+ photoView.setScaleType(ImageView.ScaleType.FIT_CENTER);
+
+ //点击事件
+ if (null != mImageLongClickListener) {
+ photoView.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ mImageLongClickListener.onImageLongClick(position, v);
+ return false;
+ }
+ });
+ }
+
+ String url = mList.get(position);
+ Log.d(TAG,"url: "+url);
+// ImageLoader.loadToUrl(mContext, photoView, url);
+ // ImageLoaderKt.loadToUrl(mContext,photoView,url);
+ RequestOptions requestOptions = new RequestOptions();
+ requestOptions.placeholder(R.mipmap.icon_default_rectangle);
+ requestOptions.error(R.mipmap.icon_default_rectangle);
+ requestOptions.skipMemoryCache(false);
+ Glide.with(mContext).load(url).apply(requestOptions).into(photoView);
+ container.addView(view);
+ return view;
+ }
+
+ @Override
+ public void destroyItem(ViewGroup container, int position, Object object) {
+ container.removeView((View) object);
+ }
+
+ @Override
+ public int getItemPosition(Object object) {
+ return POSITION_NONE;
+// return super.getItemPosition(object);
+ }
+
+ public void setOnImageLongClickListener(OnImageLongClickListener listener) {
+ this.mImageLongClickListener = listener;
+ }
+
+ public interface OnImageLongClickListener {
+ void onImageLongClick(int position, View view);
+ }
+
+}
diff --git a/app/src/main/java/com/sl/house_property/discovery/ImageViewerAndDeleteActivity.java b/app/src/main/java/com/sl/house_property/discovery/ImageViewerAndDeleteActivity.java
new file mode 100644
index 0000000..ec0d3ce
--- /dev/null
+++ b/app/src/main/java/com/sl/house_property/discovery/ImageViewerAndDeleteActivity.java
@@ -0,0 +1,79 @@
+package com.sl.house_property.discovery;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.view.ViewPager;
+import android.view.View;
+
+import com.sl.house_property.BaseActivity;
+import com.sl.house_property.R;
+import com.sl.house_property.databinding.ActivityImagePreviewAndDeleteBinding;
+
+import java.util.ArrayList;
+
+public class ImageViewerAndDeleteActivity extends BaseActivity {
+
+ private ArrayList mList;
+ private ImageViewerAdapter adapter;
+ private int index;
+
+ @Override
+ protected int getLayoutResId() {
+ return R.layout.activity_image_preview_and_delete;
+ }
+
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mList = getIntent().getStringArrayListExtra("images");
+ index = getIntent().getIntExtra("index", 0);
+ adapter = new ImageViewerAdapter(this, mList);
+ mDataBinding.tvTitle.setText(getString(R.string.text_preview_index, index + 1, mList.size()));
+
+ mDataBinding.tvDelete.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mList.size() == 1) {
+ mList.remove(index);
+
+ } else {
+ mList.remove(index);
+ adapter.notifyDataSetChanged();
+ mDataBinding.tvTitle.setText(getString(R.string.text_preview_index, index + 1, mList.size()));
+ }
+
+ }
+ });
+ mDataBinding.vpPreview.setAdapter(adapter);
+ mDataBinding.vpPreview.setCurrentItem(index);
+ mDataBinding.vpPreview.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int i, float v, int i1) {
+
+ }
+
+ @Override
+ public void onPageSelected(int i) {
+ mDataBinding.tvTitle.setText(getString(R.string.text_preview_index, i + 1, mList.size()));
+ index = i;
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int i) {
+
+ }
+ });
+ }
+
+ @Override
+ public void onBackPressed() {
+ //返回操作后的数据
+ Intent intent = new Intent();
+ intent.putStringArrayListExtra("images", mList);
+ setResult(200, intent);
+ super.onBackPressed();
+
+ }
+}
diff --git a/app/src/main/java/com/sl/house_property/discovery/PhotoViewPager.java b/app/src/main/java/com/sl/house_property/discovery/PhotoViewPager.java
new file mode 100644
index 0000000..778cc8c
--- /dev/null
+++ b/app/src/main/java/com/sl/house_property/discovery/PhotoViewPager.java
@@ -0,0 +1,41 @@
+package com.sl.house_property.discovery;
+
+import android.content.Context;
+import android.support.v4.view.ViewPager;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+
+/***
+ * 自定义viewPager操作类
+ */
+public class PhotoViewPager extends ViewPager {
+
+ public PhotoViewPager(Context context) {
+ super(context);
+ }
+
+ public PhotoViewPager(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ try {
+ return super.onTouchEvent(ev);
+ } catch (IllegalArgumentException ex) {
+ ex.printStackTrace();
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ try {
+ return super.onInterceptTouchEvent(ev);
+ } catch (IllegalArgumentException ex) {
+ ex.printStackTrace();
+ }
+ return false;
+ }
+}
diff --git a/app/src/main/java/entity/AddressEntity.java b/app/src/main/java/entity/AddressEntity.java
new file mode 100644
index 0000000..3da0dfc
--- /dev/null
+++ b/app/src/main/java/entity/AddressEntity.java
@@ -0,0 +1,85 @@
+package entity;
+
+public class AddressEntity {
+ private String consignee_id;
+ private String userid;
+ private String name;
+ private String address;
+ private String mobile;
+ private String is_default;
+ private String is_del;
+ private String ctime;
+ private String region;
+
+ public String getConsignee_id() {
+ return consignee_id;
+ }
+
+ public void setConsignee_id(String consignee_id) {
+ this.consignee_id = consignee_id;
+ }
+
+ public String getUserid() {
+ return userid;
+ }
+
+ public void setUserid(String userid) {
+ this.userid = userid;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public String getIs_default() {
+ return is_default;
+ }
+
+ public void setIs_default(String is_default) {
+ this.is_default = is_default;
+ }
+
+ public String getIs_del() {
+ return is_del;
+ }
+
+ public void setIs_del(String is_del) {
+ this.is_del = is_del;
+ }
+
+ public String getCtime() {
+ return ctime;
+ }
+
+ public void setCtime(String ctime) {
+ this.ctime = ctime;
+ }
+
+ public String getRegion() {
+ return region;
+ }
+
+ public void setRegion(String region) {
+ this.region = region;
+ }
+}
diff --git a/app/src/main/java/entity/CartEntity.java b/app/src/main/java/entity/CartEntity.java
new file mode 100644
index 0000000..bad7632
--- /dev/null
+++ b/app/src/main/java/entity/CartEntity.java
@@ -0,0 +1,154 @@
+package entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CartEntity {
+ private String userid;
+ private String nickname;
+ private String avatar;
+ private ArrayList list;
+ private boolean isCheck;
+
+ public boolean isCheck() {
+ return isCheck;
+ }
+
+ public void setCheck(boolean check) {
+ isCheck = check;
+ }
+
+ public String getUserid() {
+ return userid;
+ }
+
+ public void setUserid(String userid) {
+ this.userid = userid;
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname;
+ }
+
+ public String getAvatar() {
+ return avatar;
+ }
+
+ public void setAvatar(String avatar) {
+ this.avatar = avatar;
+ }
+
+ public ArrayList getList() {
+ return list;
+ }
+
+ public void setList(ArrayList list) {
+ this.list = list;
+ }
+
+ public static class CartList {
+ private String goods_detail;
+ private String thumb;
+ private String property;
+ private String sale_price;
+ private String sale_num;
+ private String cart_id;
+ private String goods_id;
+ private String product_code;
+ private String stock_status;
+ private String stock_msg;
+ private boolean isCheck;
+
+ public boolean isCheck() {
+ return isCheck;
+ }
+
+ public void setCheck(boolean check) {
+ isCheck = check;
+ }
+
+ public String getGoods_detail() {
+ return goods_detail;
+ }
+
+ public void setGoods_detail(String goods_detail) {
+ this.goods_detail = goods_detail;
+ }
+
+ public String getThumb() {
+ return thumb;
+ }
+
+ public void setThumb(String thumb) {
+ this.thumb = thumb;
+ }
+
+ public String getProperty() {
+ return property;
+ }
+
+ public void setProperty(String property) {
+ this.property = property;
+ }
+
+ public String getSale_price() {
+ return sale_price;
+ }
+
+ public void setSale_price(String sale_price) {
+ this.sale_price = sale_price;
+ }
+
+ public String getSale_num() {
+ return sale_num;
+ }
+
+ public void setSale_num(String sale_num) {
+ this.sale_num = sale_num;
+ }
+
+ public String getCart_id() {
+ return cart_id;
+ }
+
+ public void setCart_id(String cart_id) {
+ this.cart_id = cart_id;
+ }
+
+ public String getGoods_id() {
+ return goods_id;
+ }
+
+ public void setGoods_id(String goods_id) {
+ this.goods_id = goods_id;
+ }
+
+ public String getProduct_code() {
+ return product_code;
+ }
+
+ public void setProduct_code(String product_code) {
+ this.product_code = product_code;
+ }
+
+ public String getStock_status() {
+ return stock_status;
+ }
+
+ public void setStock_status(String stock_status) {
+ this.stock_status = stock_status;
+ }
+
+ public String getStock_msg() {
+ return stock_msg;
+ }
+
+ public void setStock_msg(String stock_msg) {
+ this.stock_msg = stock_msg;
+ }
+ }
+}
diff --git a/app/src/main/java/imageselector/PreviewActivity.java b/app/src/main/java/imageselector/PreviewActivity.java
index 36f1ecb..ba487ee 100644
--- a/app/src/main/java/imageselector/PreviewActivity.java
+++ b/app/src/main/java/imageselector/PreviewActivity.java
@@ -77,7 +77,7 @@ public class PreviewActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_preview2);
+ setContentView(R.layout.activity_preview);
setStatusBarVisible(true);
mImages = tempImages;
diff --git a/app/src/main/res/drawable/bg_tv_blue_round.xml b/app/src/main/res/drawable/bg_tv_blue_round.xml
new file mode 100644
index 0000000..32e4fee
--- /dev/null
+++ b/app/src/main/res/drawable/bg_tv_blue_round.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_blank.xml b/app/src/main/res/drawable/shape_blank.xml
new file mode 100644
index 0000000..2b561b1
--- /dev/null
+++ b/app/src/main/res/drawable/shape_blank.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_delete_bg.xml b/app/src/main/res/drawable/shape_delete_bg.xml
new file mode 100644
index 0000000..ae2ddd9
--- /dev/null
+++ b/app/src/main/res/drawable/shape_delete_bg.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/text_login.xml b/app/src/main/res/drawable/text_login.xml
new file mode 100644
index 0000000..95d6c4e
--- /dev/null
+++ b/app/src/main/res/drawable/text_login.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_add_discovery.xml b/app/src/main/res/layout/activity_add_discovery.xml
new file mode 100644
index 0000000..ca1cf76
--- /dev/null
+++ b/app/src/main/res/layout/activity_add_discovery.xml
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_address_list.xml b/app/src/main/res/layout/activity_address_list.xml
new file mode 100644
index 0000000..ebbcc28
--- /dev/null
+++ b/app/src/main/res/layout/activity_address_list.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_image_preview_and_delete.xml b/app/src/main/res/layout/activity_image_preview_and_delete.xml
new file mode 100644
index 0000000..cdbadf7
--- /dev/null
+++ b/app/src/main/res/layout/activity_image_preview_and_delete.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_cart.xml b/app/src/main/res/layout/fragment_cart.xml
new file mode 100644
index 0000000..89432f1
--- /dev/null
+++ b/app/src/main/res/layout/fragment_cart.xml
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main4.xml b/app/src/main/res/layout/fragment_main4.xml
index 0adc8bc..d5fd4ce 100644
--- a/app/src/main/res/layout/fragment_main4.xml
+++ b/app/src/main/res/layout/fragment_main4.xml
@@ -1,93 +1,428 @@
-
-
-
+
+
+ android:orientation="vertical">
-
+ android:background="#F7F7F7"
+ android:fillViewport="true">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ android:orientation="vertical">
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_address.xml b/app/src/main/res/layout/item_address.xml
new file mode 100644
index 0000000..ea5bbc8
--- /dev/null
+++ b/app/src/main/res/layout/item_address.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_cart.xml b/app/src/main/res/layout/item_cart.xml
new file mode 100644
index 0000000..7fa6114
--- /dev/null
+++ b/app/src/main/res/layout/item_cart.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_cart_cart.xml b/app/src/main/res/layout/item_cart_cart.xml
new file mode 100644
index 0000000..de9d0c3
--- /dev/null
+++ b/app/src/main/res/layout/item_cart_cart.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_preview.xml b/app/src/main/res/layout/item_preview.xml
new file mode 100644
index 0000000..543e6eb
--- /dev/null
+++ b/app/src/main/res/layout/item_preview.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_rv_create_dynamic.xml b/app/src/main/res/layout/item_rv_create_dynamic.xml
new file mode 100644
index 0000000..f79f4c6
--- /dev/null
+++ b/app/src/main/res/layout/item_rv_create_dynamic.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_amount.xml b/app/src/main/res/layout/view_amount.xml
new file mode 100644
index 0000000..81788bc
--- /dev/null
+++ b/app/src/main/res/layout/view_amount.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xhdpi/icon_add1.png b/app/src/main/res/mipmap-xhdpi/icon_add1.png
new file mode 100644
index 0000000000000000000000000000000000000000..927624097ceb2f1997df2156742d6941763cafdf
GIT binary patch
literal 1406
zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%k|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+*
zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn
zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L
zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj
z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5
zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v>
zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}kK3j;%AM-wwcb5}z{S4$^TBMUbZ14|1N
z0~bpJ3v-xWm;B_?+|;}hnBEkGUQ?WUK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~5(
zJgD9j+-@<(saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4*6+(Yey3=E8)JzX3_
zDsHWrcG8R4QJ^jTk%YOx_U;E#f`J@6cL>DrH7QhmSm5&Ik@O42{DmC9*yO%0Si!EZ
zx1;fa(3b@rULgX3AC#O-x{mE%;MTSgo5|UG8&y|1Ugil8EQ0Kfzh{UcY>1
zJB2QYzog0f=h?LhUl!&HDJ@iNt-P+ww5uup$nmaC(~^J2FL`i1>q5VGd-?6_>bkk-
z75bM?e#8F6`p8PvgD!<3954;PlfOuDON(
zJa+%&<-3uRz2Ma!hCJ3_@kjl)Sw*MiED^lQ;H>b)OaDBJQ`(0H@7g6Qr>6R}Sy&zw
z*`%Hs`A3~~zXa#nKbxm575Sw%>B82_iBFBR&L&=TEpz^O_Gh1$Rp8H+?5zu8E~#h5
z-Vip>k8JWgD628y#eVj%x6dzfRS%8|NIdkDZBQr#(l>7A@53;m41x5%({thN@38Rg3d*UcArx&+!D{o
Z#*mR0AG=H0DG5{}db;|#taD0e0svMw0bl?C
literal 0
HcmV?d00001
diff --git a/app/src/main/res/mipmap-xhdpi/icon_minus.png b/app/src/main/res/mipmap-xhdpi/icon_minus.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb9eda55c7e933305ffd01c3763ca55d4555207c
GIT binary patch
literal 1306
zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%k|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+*
zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn
zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L
zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj
z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5
zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v>
zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}k~10zEdR}(Wsb5}z{S4&3=H%kjAGglK6
zXCoJ&FifvYesXDUYF-IUZwf-MDNenhl#p8hwAm%KD6=dz#jPkmR{`u}t4!Q(F~Vsc
zRBsAyw;1Eps}FRHJ}6$1;u$6cOgtbaJk%IRE3jylNnIp34$
zdc5FIuEQPHBkUVB(+(w`U{SDZJuZ}UfV+dA;UiO$?k$ERKY5-sS18yyolu&f`j2M{
zbGE|0?$e7pLpHIn&1tAm-Q_yVVa{=fS^>5r+fIm;8eic1a!6+qb5g!k6w4{KUkcq$
z5*hr5W-KtfBsHVai_O@EYoBwbn-b4&_9HPCPedHWP9{zK!R@P??yss2xM3u!?E%>vkiEWw;
z+auo>UjtQ4HV1MyNNLOM$ciXdu=8W}&T}|@A^*oM9y5nMeN5ip98RClZ;?`8AS1`K
z*3RSOT~>v@rfrP&lP|4{<~~|>VFR0~!qmnHmZ+>fjbecdTDC~P5}w1LaDXAF-s5uB
SgxMyb(#q4-&t;ucLK6TJExJYk
literal 0
HcmV?d00001
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_add1.png b/app/src/main/res/mipmap-xxhdpi/icon_add1.png
new file mode 100644
index 0000000000000000000000000000000000000000..226f7ea796a7a19a00dc39705ef59137065708ae
GIT binary patch
literal 1635
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
literal 0
HcmV?d00001
diff --git a/app/src/main/res/values/attr.xml b/app/src/main/res/values/attr.xml
index 6abeab1..d1189a5 100644
--- a/app/src/main/res/values/attr.xml
+++ b/app/src/main/res/values/attr.xml
@@ -27,5 +27,13 @@
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6fc5673..55aa125 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -14,7 +14,7 @@
加载中...
请选择或输入缴费金额
请选择需要缴费的房屋
-
+ (%1$d/%2$d)预览
Hello blank fragment
Sign in