|
|
@@ -0,0 +1,674 @@
|
|
|
+package com.xzjmyk.pm.activity.ui.erp.activity.oa;
|
|
|
+
|
|
|
+import android.annotation.TargetApi;
|
|
|
+import android.app.Activity;
|
|
|
+import android.app.AlertDialog;
|
|
|
+import android.content.Context;
|
|
|
+import android.content.DialogInterface;
|
|
|
+import android.content.Intent;
|
|
|
+import android.net.Uri;
|
|
|
+import android.os.Build;
|
|
|
+import android.os.Bundle;
|
|
|
+import android.os.Handler;
|
|
|
+import android.text.Editable;
|
|
|
+import android.text.TextWatcher;
|
|
|
+import android.util.Log;
|
|
|
+import android.view.Gravity;
|
|
|
+import android.view.LayoutInflater;
|
|
|
+import android.view.View;
|
|
|
+import android.view.ViewGroup;
|
|
|
+import android.widget.AdapterView;
|
|
|
+import android.widget.BaseAdapter;
|
|
|
+import android.widget.Button;
|
|
|
+import android.widget.ImageView;
|
|
|
+import android.widget.LinearLayout;
|
|
|
+import android.widget.PopupWindow;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import com.andreabaccega.widget.FormEditText;
|
|
|
+import com.lidroid.xutils.ViewUtils;
|
|
|
+import com.lidroid.xutils.view.annotation.ViewInject;
|
|
|
+import com.nostra13.universalimageloader.core.ImageLoader;
|
|
|
+import com.xzjmyk.pm.activity.AppConstant;
|
|
|
+import com.xzjmyk.pm.activity.R;
|
|
|
+import com.xzjmyk.pm.activity.bean.oa.SelectBean;
|
|
|
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.view.NScrollerGridView;
|
|
|
+import com.xzjmyk.pm.activity.ui.tool.MultiImagePreviewActivity;
|
|
|
+import com.xzjmyk.pm.activity.util.CameraUtil;
|
|
|
+import com.xzjmyk.pm.activity.util.DisplayUtil;
|
|
|
+import com.xzjmyk.pm.activity.util.StringUtils;
|
|
|
+import com.xzjmyk.pm.activity.util.ToastUtil;
|
|
|
+import com.xzjmyk.pm.activity.view.MyGridView;
|
|
|
+import com.xzjmyk.pm.activity.view.MyListView;
|
|
|
+import com.xzjmyk.pm.activity.view.SquareCenterImageView;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+@TargetApi(Build.VERSION_CODES.CUPCAKE)
|
|
|
+/**
|
|
|
+ * Created by FANGlh on 2017/6/9.
|
|
|
+ * function:
|
|
|
+ */
|
|
|
+
|
|
|
+public class ExpenseReimbursementActivity extends BaseActivity implements View.OnClickListener{
|
|
|
+ @ViewInject(R.id.reimbursement_title_fet)
|
|
|
+ private FormEditText reimbursement_title_fet;
|
|
|
+ @ViewInject(R.id.reimbursement_type_fet)
|
|
|
+ private FormEditText reimbursement_type_fet;
|
|
|
+ @ViewInject(R.id.reimbursement_currency_fet)
|
|
|
+ private FormEditText reimbursement_currency_fet;
|
|
|
+ @ViewInject(R.id.btn_save)
|
|
|
+ private Button btn_save;
|
|
|
+ @ViewInject(R.id.gv_details_list)
|
|
|
+ private NScrollerGridView gv_details_list;
|
|
|
+ @ViewInject(R.id.sum_money_tv)
|
|
|
+ private TextView sum_money_tv;
|
|
|
+ @ViewInject(R.id.detail_table_ll)
|
|
|
+ private LinearLayout detail_table_ll;
|
|
|
+ private MyGridView mGridView;
|
|
|
+ private GridViewAdapter mAdapter;
|
|
|
+ private ArrayList<String> mPhotoList;
|
|
|
+ private Uri mNewPhotoUri;// 拍照和图库 获得图片的URI
|
|
|
+ private static final int REQUEST_CODE_CAPTURE_PHOTO = 1;// 拍照
|
|
|
+ private static final int REQUEST_CODE_PICK_PHOTO = 2;// 图库
|
|
|
+ private static final int SELECT_REIMBURSEMENT_TYPE = 3;
|
|
|
+ private static final int SELECT_CURRENCY = 4;
|
|
|
+ private PopupWindow setWindow = null;//
|
|
|
+ private GridDataAdapter gAdapter;
|
|
|
+ private String[] TypeDatas = {"类型1","类型2","类型3","类型4","类型5"};
|
|
|
+ private String[] CurrencyDatas = {"币种1","币种2","币种3","币种4","币种5"};
|
|
|
+ @ViewInject(R.id.details_data_tv)
|
|
|
+ private TextView details_data_tv;
|
|
|
+ private Boolean initDetailDatas_initialization = false;
|
|
|
+ private Button btn_sure;
|
|
|
+ private int VERSION_CODES;
|
|
|
+ @ViewInject(R.id.table_details_list)
|
|
|
+ private MyListView table_details_list;
|
|
|
+ private DetailsTableAdapter dtAdapter;
|
|
|
+ private List<String> detailsData; // popwindow要展示的消费明细类型
|
|
|
+ private List<String> selected_detailsData; //点击后要返回的消费明细类型
|
|
|
+ private List<String> table_list_type; //表格里面新增的消费明细类型
|
|
|
+ private List<Double> table_list_money;//表格里面新增的消费明细金额
|
|
|
+ private double sum_money = 0.0; // 最后算的的总金额
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCreate(Bundle savedInstanceState) {
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
+ setContentView(R.layout.activity_expense_reimbursement);
|
|
|
+ ViewUtils.inject(this);
|
|
|
+ iniView();
|
|
|
+ initPicturesEvent();
|
|
|
+ }
|
|
|
+ private void iniView() {
|
|
|
+ VERSION_CODES = android.os.Build.VERSION.SDK_INT;
|
|
|
+ reimbursement_title_fet.setOnClickListener(this);
|
|
|
+
|
|
|
+ reimbursement_type_fet.setKeyListener(null);
|
|
|
+ reimbursement_type_fet.setFocusable(false);
|
|
|
+ reimbursement_type_fet.setOnClickListener(this);
|
|
|
+
|
|
|
+ reimbursement_currency_fet.setKeyListener(null);
|
|
|
+ reimbursement_currency_fet.setFocusable(false);
|
|
|
+ reimbursement_currency_fet.setOnClickListener(this);
|
|
|
+
|
|
|
+ btn_save.setOnClickListener(this);
|
|
|
+
|
|
|
+ mGridView = (MyGridView) findViewById(R.id.grid_view);
|
|
|
+ findViewById(R.id.add_details_tv).setOnClickListener(this);
|
|
|
+ findViewById(R.id.automatic_calculation_tv).setOnClickListener(this);
|
|
|
+ mPhotoList = new ArrayList<String>();
|
|
|
+ mAdapter = new GridViewAdapter();
|
|
|
+ mGridView.setAdapter(mAdapter);
|
|
|
+
|
|
|
+ detail_table_ll.setVisibility(View.GONE);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ switch (v.getId()){
|
|
|
+ case R.id.reimbursement_type_fet:
|
|
|
+ doSingleSelect(TypeDatas,2,getString(R.string.Reimbursement_type),SELECT_REIMBURSEMENT_TYPE);
|
|
|
+ break;
|
|
|
+ case R.id.reimbursement_currency_fet:
|
|
|
+ doSingleSelect(CurrencyDatas,2,getString(R.string.currency),SELECT_CURRENCY);
|
|
|
+ break;
|
|
|
+ case R.id.add_details_tv:
|
|
|
+ showPopupWindow();
|
|
|
+ break;
|
|
|
+ case R.id.automatic_calculation_tv:
|
|
|
+ doAutoCalculateJudge();
|
|
|
+ break;
|
|
|
+ case R.id.btn_save:
|
|
|
+ if (reimbursement_title_fet.testValidity() ){
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void doAutoCalculateJudge() {
|
|
|
+ sum_money = 0.0;
|
|
|
+ if (ListUtils.isEmpty(table_list_money)){
|
|
|
+ ToastMessage("请输入消费金额");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (table_list_type.size() > table_list_money.size()){
|
|
|
+ ToastMessage("请输入完整的消费明细金额");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Log.i("table_list_money",table_list_money.toString()+"");
|
|
|
+ for (int i = 0; i < table_list_money.size(); i++) {
|
|
|
+ sum_money = sum_money + Double.valueOf(table_list_money.get(i));
|
|
|
+ if (i == (table_list_money.size() - 1)){
|
|
|
+ sum_money_tv.setText(CommonUtil.getTwoPointDouble(sum_money)+"");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void showPopupWindow() {
|
|
|
+ if (setWindow == null) initPopupWindow();
|
|
|
+ setWindow.showAtLocation(getWindow().getDecorView().
|
|
|
+ findViewById(android.R.id.content), Gravity.BOTTOM, 0, 0);
|
|
|
+ if (VERSION_CODES < 24) // API版本太高不断刷新View亮度,会有黑缝隙bug
|
|
|
+ DisplayUtil.backgroundAlpha(this, 0.4f);
|
|
|
+ }
|
|
|
+ private void closePopupWindow() {
|
|
|
+ if (setWindow != null)
|
|
|
+ setWindow.dismiss();
|
|
|
+ if (VERSION_CODES < 24)
|
|
|
+ DisplayUtil.backgroundAlpha(this, 1f);
|
|
|
+ }
|
|
|
+ private void initPopupWindow() {
|
|
|
+ View viewContext = LayoutInflater.from(ct).inflate(R.layout.expense_details_menu, null);
|
|
|
+
|
|
|
+ setWindow = new PopupWindow(viewContext,
|
|
|
+ LinearLayout.LayoutParams.MATCH_PARENT,
|
|
|
+ LinearLayout.LayoutParams.WRAP_CONTENT, true);
|
|
|
+ setWindow.setAnimationStyle(R.style.MenuAnimationFade);
|
|
|
+ setWindow.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.bg_popuwin));
|
|
|
+ setWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
|
|
|
+ @Override
|
|
|
+ public void onDismiss() {
|
|
|
+ closePopupWindow();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ gv_details_list = (NScrollerGridView) viewContext.findViewById(R.id.gv_details_list);
|
|
|
+ btn_sure = (Button) viewContext.findViewById(R.id.btn_sure);
|
|
|
+ initAddView();
|
|
|
+ initAddDatas();
|
|
|
+ initAddEvent();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initAddEvent() {
|
|
|
+ gv_details_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
|
|
+ GridDataAdapter.ViewModle modle = (GridDataAdapter.ViewModle) view.getTag();
|
|
|
+ // TODO 记录当下点击的位置
|
|
|
+ if (!ListUtils.isEmpty(selected_detailsData) && selected_detailsData.contains(detailsData.get(position))){
|
|
|
+ selected_detailsData.remove(detailsData.get(position));
|
|
|
+ }else {
|
|
|
+ selected_detailsData.add(detailsData.get(position));
|
|
|
+ }
|
|
|
+ gAdapter.setSelected_data(selected_detailsData);
|
|
|
+ gAdapter.notifyDataSetChanged();
|
|
|
+ Log.i("selected_detailsData",selected_detailsData.toString()+"ss");
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ btn_sure.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ closePopupWindow();
|
|
|
+ if (ListUtils.isEmpty(selected_detailsData)) return;
|
|
|
+ for (int i = 0; i < selected_detailsData.size(); i++) {
|
|
|
+ table_list_type.add(selected_detailsData.get(i));
|
|
|
+ detailsData.remove(selected_detailsData.get(i));
|
|
|
+ if (i == (selected_detailsData.size()-1)){
|
|
|
+ dtAdapter.setTable_list_type(table_list_type);
|
|
|
+ dtAdapter.setTable_list_money(table_list_money);
|
|
|
+ dtAdapter.notifyDataSetChanged();
|
|
|
+ detail_table_ll.setVisibility(View.VISIBLE);
|
|
|
+ Log.i("selected_detailsData",selected_detailsData.toString()+"se");
|
|
|
+ Log.i("detailsData",detailsData.toString()+"de");
|
|
|
+ Log.i("table_list_type",table_list_type.toString()+"tlt");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ selected_detailsData.clear();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initAddDatas() {
|
|
|
+ if (!ListUtils.isEmpty(selected_detailsData)) selected_detailsData.clear();
|
|
|
+ //TODO 接口返回
|
|
|
+ if (initDetailDatas_initialization) return;
|
|
|
+ for (int i = 0; i < 22; i++) {
|
|
|
+ detailsData.add("明细" + i);
|
|
|
+ initDetailDatas_initialization = true;
|
|
|
+ Log.i("initDetailDatas","false");
|
|
|
+ }
|
|
|
+ Log.i("initDetailDatas","initDetailDatas_initialization");
|
|
|
+ }
|
|
|
+ private void initAddView() {
|
|
|
+ detailsData = new ArrayList<>();
|
|
|
+ selected_detailsData = new ArrayList<>();
|
|
|
+ gAdapter = new GridDataAdapter(mContext, detailsData);
|
|
|
+ gv_details_list.setAdapter(gAdapter);
|
|
|
+
|
|
|
+ dtAdapter = new DetailsTableAdapter();
|
|
|
+ table_list_type = new ArrayList<>();
|
|
|
+ table_list_money = new ArrayList<>();
|
|
|
+ table_details_list.setAdapter(dtAdapter);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
+ super.onActivityResult(requestCode, resultCode, data);
|
|
|
+ if (requestCode == REQUEST_CODE_CAPTURE_PHOTO) {// 拍照返回
|
|
|
+ if (resultCode == Activity.RESULT_OK) {
|
|
|
+ if (mNewPhotoUri != null) {
|
|
|
+ mPhotoList.add(mNewPhotoUri.getPath());
|
|
|
+ mAdapter.notifyDataSetInvalidated();
|
|
|
+ } else {
|
|
|
+ ToastUtil.showToast(this, R.string.c_take_picture_failed);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (requestCode == REQUEST_CODE_PICK_PHOTO) {// 选择一张图片,然后立即调用裁减
|
|
|
+ if (resultCode == Activity.RESULT_OK) {
|
|
|
+ if (data != null && data.getData() != null) {
|
|
|
+ String path = CameraUtil.getImagePathFromUri(this, data.getData());
|
|
|
+ mPhotoList.add(path);
|
|
|
+ mAdapter.notifyDataSetInvalidated();
|
|
|
+ } else {
|
|
|
+ ToastUtil.showToast(this, R.string.c_photo_album_failed);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (resultCode == 0x20){
|
|
|
+ SelectBean b = data.getParcelableExtra("data");
|
|
|
+ if (b != null){
|
|
|
+ switch (requestCode){
|
|
|
+ case SELECT_REIMBURSEMENT_TYPE:
|
|
|
+ reimbursement_type_fet.setText(b.getName());
|
|
|
+ break;
|
|
|
+ case SELECT_CURRENCY:
|
|
|
+ reimbursement_currency_fet.setText(b.getName());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private class DetailsTableAdapter extends BaseAdapter{
|
|
|
+ private Context context;
|
|
|
+ private List<String> table_list_type;
|
|
|
+ private List<Double> table_list_money;
|
|
|
+
|
|
|
+ public List<String> getTable_list_type() {
|
|
|
+ return table_list_type;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTable_list_type(List<String> table_list_type) {
|
|
|
+ this.table_list_type = table_list_type;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<Double> getTable_list_money() {
|
|
|
+ return table_list_money;
|
|
|
+ }
|
|
|
+ public void setTable_list_money(List<Double> table_list_money) {
|
|
|
+ this.table_list_money = table_list_money;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getCount() {
|
|
|
+ return ListUtils.isEmpty(table_list_type) ? 0 : table_list_type.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object getItem(int position) {
|
|
|
+ return ListUtils.isEmpty(table_list_type) ? 0 : table_list_type.get(position);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public long getItemId(int position) {
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public View getView(final int position, View convertView, ViewGroup parent) {
|
|
|
+ ViewHolder viewHolder = null;
|
|
|
+ if (convertView == null){
|
|
|
+ viewHolder = new ViewHolder();
|
|
|
+ convertView = View.inflate(ExpenseReimbursementActivity.this, R.layout.expense_details_table_item,null);
|
|
|
+ viewHolder.details_type = (TextView) convertView.findViewById(R.id.details_type_tv);
|
|
|
+ viewHolder.details_money = (FormEditText) convertView.findViewById(R.id.details_money_tv);
|
|
|
+ viewHolder.details_delete = (ImageView) convertView.findViewById(R.id.details_delete_im);
|
|
|
+ convertView.setTag(viewHolder);
|
|
|
+ }else {
|
|
|
+ viewHolder = (ViewHolder) convertView.getTag();
|
|
|
+ }
|
|
|
+ viewHolder.details_type.setText(getTable_list_type().get(position) + "");
|
|
|
+// viewHolder.details_money.setText(getTable_list_money().get(position)+"");
|
|
|
+
|
|
|
+ viewHolder.details_delete.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ new android.support.v7.app.AlertDialog
|
|
|
+ .Builder(mContext)
|
|
|
+ .setTitle(mContext.getString(R.string.common_notice))
|
|
|
+ .setMessage("确定删除该条消费明细?")
|
|
|
+ .setNegativeButton(mContext.getString(R.string.common_cancel), null)
|
|
|
+ .setPositiveButton(mContext.getString(R.string.common_sure), new DialogInterface.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(DialogInterface dialog, int which) {
|
|
|
+ table_list_type.remove(position);
|
|
|
+ if (!ListUtils.isEmpty(table_list_money) && table_list_money.get(position) != null){
|
|
|
+ table_list_money.remove(position);
|
|
|
+ }
|
|
|
+ if (ListUtils.isEmpty(table_list_type)){
|
|
|
+ detail_table_ll.setVisibility(View.GONE);
|
|
|
+ }else {
|
|
|
+ notifyDataSetChanged();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).show();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ /*String s = viewHolder.details_money.getText().toString();
|
|
|
+ if (!StringUtils.isEmpty(s)){
|
|
|
+ double numberstrChche = Double.parseDouble(s);
|
|
|
+ if (table_list_money == null){
|
|
|
+ table_list_money.add(position, CommonUtil.getTwoPointDouble(numberstrChche));
|
|
|
+ }else {
|
|
|
+ table_list_money.remove(position);
|
|
|
+ table_list_money.add(position,CommonUtil.getTwoPointDouble(numberstrChche));
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+
|
|
|
+ viewHolder.details_money.addTextChangedListener(new TextWatcher() {
|
|
|
+ @Override
|
|
|
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
|
|
+ @Override
|
|
|
+ public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
|
|
+ @Override
|
|
|
+ public void afterTextChanged(Editable s) {
|
|
|
+ if (StringUtils.isEmpty(s.toString())) return;
|
|
|
+ double numberstrChche = Double.parseDouble(s.toString());
|
|
|
+ money_edit_position = position;
|
|
|
+ /*if (table_list_money == null ){
|
|
|
+ table_list_money.add(position, CommonUtil.getTwoPointDouble(numberstrChche));
|
|
|
+ }else if (table_list_money.get(position) == null){
|
|
|
+ table_list_money.add(position, CommonUtil.getTwoPointDouble(numberstrChche));
|
|
|
+ }else {
|
|
|
+ table_list_money.remove(position);
|
|
|
+ table_list_money.add(position,CommonUtil.getTwoPointDouble(numberstrChche));
|
|
|
+ }*/
|
|
|
+
|
|
|
+ if(delayRun!=null){
|
|
|
+ //每次editText有变化的时候,则移除上次发出的延迟线程
|
|
|
+ dthandler.removeCallbacks(delayRun);
|
|
|
+ }
|
|
|
+ money_editString = s.toString();
|
|
|
+
|
|
|
+ //延迟800ms,如果不再输入字符,则执行该线程的run方法
|
|
|
+ dthandler.postDelayed(delayRun, 1000);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return convertView;
|
|
|
+ }
|
|
|
+ class ViewHolder{
|
|
|
+ TextView details_type;
|
|
|
+ FormEditText details_money;
|
|
|
+ ImageView details_delete;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private Runnable delayRun = new Runnable() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ if (table_list_money == null ) {
|
|
|
+ table_list_money.add(CommonUtil.getTwoPointDouble(Double.valueOf(money_editString)));
|
|
|
+ }else {
|
|
|
+ if (money_edit_position < table_list_money.size()){
|
|
|
+ table_list_money.remove(money_edit_position);
|
|
|
+ table_list_money.add(money_edit_position,CommonUtil.getTwoPointDouble(Double.valueOf(money_editString)));
|
|
|
+ }else if (money_edit_position == table_list_money.size()){
|
|
|
+ table_list_money.add(CommonUtil.getTwoPointDouble(Double.valueOf(money_editString)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ private int money_edit_position;
|
|
|
+ private String money_editString = "";
|
|
|
+ private Handler dthandler = new Handler();
|
|
|
+ /**
|
|
|
+ *新增弹出PopupWindow表格适配器
|
|
|
+ */
|
|
|
+ private class GridDataAdapter extends BaseAdapter {
|
|
|
+ private Context ct;
|
|
|
+ private List<String> mData = new ArrayList<>();
|
|
|
+ private LayoutInflater inflater;
|
|
|
+ private int selected = 0;
|
|
|
+ private List<String> selected_data;
|
|
|
+
|
|
|
+ public List<String> getSelected_data() {
|
|
|
+ return selected_data;
|
|
|
+ }
|
|
|
+ public void setSelected_data(List<String> selected_data) {
|
|
|
+ this.selected_data = selected_data;
|
|
|
+ }
|
|
|
+ GridDataAdapter(Context ct, List<String> data) {
|
|
|
+ this.ct = ct;
|
|
|
+ this.mData = data;
|
|
|
+ this.inflater = LayoutInflater.from(ct);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public int getCount() {
|
|
|
+ return mData.size();
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public Object getItem(int position) {
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public long getItemId(int position) {
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+ public int getSelected() {
|
|
|
+ return selected;
|
|
|
+ }
|
|
|
+ public void setSelected(int selected) {
|
|
|
+ this.selected = selected;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public View getView(int position, View convertView, ViewGroup parent) {
|
|
|
+ GridDataAdapter.ViewModle modle = null;
|
|
|
+ if (convertView == null) {
|
|
|
+ convertView = inflater.inflate(R.layout.item_simple_text, parent, false);
|
|
|
+ modle = new GridDataAdapter.ViewModle();
|
|
|
+ modle.tv_text = (TextView) convertView.findViewById(R.id.tv_text);
|
|
|
+ convertView.setTag(modle);
|
|
|
+ } else {
|
|
|
+ modle = (GridDataAdapter.ViewModle) convertView.getTag();
|
|
|
+ }
|
|
|
+ modle.tv_text.setText(mData.get(position));
|
|
|
+ modle.tv_text.setSelected(false);
|
|
|
+ modle.tv_text.setTextColor(mContext.getResources().getColor(R.color.black));
|
|
|
+ if (!ListUtils.isEmpty(selected_data)){
|
|
|
+ for (int i = 0;i < getSelected_data().size();i++){
|
|
|
+ if (getSelected_data().get(i).equals(mData.get(position))){
|
|
|
+ modle.tv_text.setSelected(true);
|
|
|
+ modle.tv_text.setTextColor(mContext.getResources().getColor(R.color.white));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return convertView;
|
|
|
+ }
|
|
|
+
|
|
|
+ class ViewModle {
|
|
|
+ TextView tv_text;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 图片适配器
|
|
|
+ */
|
|
|
+ private class GridViewAdapter extends BaseAdapter {
|
|
|
+ @Override
|
|
|
+ public int getCount() {
|
|
|
+ if (mPhotoList.size() >= 9) {return 9;}
|
|
|
+ return mPhotoList.size() + 1;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public Object getItem(int position) {
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public long getItemId(int position) {
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public int getViewTypeCount() {
|
|
|
+ return 2;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public int getItemViewType(int position) {
|
|
|
+ if (mPhotoList.size() == 0) {
|
|
|
+ return 1;// View Type 1代表添加更多的视图
|
|
|
+ } else if (mPhotoList.size() < 9) {
|
|
|
+ if (position < mPhotoList.size()) {
|
|
|
+ return 0;// View Type 0代表普通的ImageView视图
|
|
|
+ } else {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public View getView(final int position, View convertView, ViewGroup parent) {
|
|
|
+ if (getItemViewType(position) == 0) {// 普通的视图
|
|
|
+ SquareCenterImageView imageView = new SquareCenterImageView(ct);
|
|
|
+ imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
|
|
+ String url = mPhotoList.get(position);
|
|
|
+ if (url == null) {
|
|
|
+ url = "";
|
|
|
+ }
|
|
|
+ ImageLoader.getInstance().displayImage(Uri.fromFile(new File(url)).toString(), imageView);
|
|
|
+ return imageView;
|
|
|
+ } else {
|
|
|
+ View view = LayoutInflater.from(ct).inflate(R.layout.layout_circle_add_more_item,
|
|
|
+ parent, false);
|
|
|
+ ImageView iconImageView = (ImageView) view.findViewById(R.id.icon_image_view);
|
|
|
+ TextView voiceTextTv = (TextView) view.findViewById(R.id.text_tv);
|
|
|
+ iconImageView.setBackgroundResource(R.drawable.add_picture);
|
|
|
+ voiceTextTv.setText(R.string.qzone_add_picture);
|
|
|
+ return view;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通用跳转界面单选方法
|
|
|
+ * @param Datas
|
|
|
+ * @param type 2:单选
|
|
|
+ * @param title
|
|
|
+ * @param requestCode
|
|
|
+ */
|
|
|
+ private void doSingleSelect(String[] Datas, int type, String title, int requestCode) {
|
|
|
+ //TODO Datas为接口返回
|
|
|
+ ArrayList<SelectBean> formBeaan = new ArrayList<>();
|
|
|
+ SelectBean selectBean;
|
|
|
+ for (int i = 0; i < Datas.length; i++) {
|
|
|
+ selectBean = new SelectBean();
|
|
|
+ selectBean.setName(Datas[i]);
|
|
|
+ formBeaan.add(selectBean);
|
|
|
+ }
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setClass(this, SelectActivity.class);
|
|
|
+ intent.putExtra("type", type);
|
|
|
+ intent.putExtra("title", title);
|
|
|
+ intent.putParcelableArrayListExtra("data", formBeaan);
|
|
|
+ startActivityForResult(intent, requestCode);
|
|
|
+ }
|
|
|
+ private void initPicturesEvent() {
|
|
|
+ mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
|
|
+ int viewType = mAdapter.getItemViewType(position);
|
|
|
+
|
|
|
+ if (viewType == 1) {
|
|
|
+ showSelectPictureDialog();//第一个
|
|
|
+ //TODO 选择图片页面
|
|
|
+// startActivityForResult(new Intent(ct, PhoneSelectActivity.class), 222);
|
|
|
+ } else {
|
|
|
+ showPictureActionDialog(position);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ private void showSelectPictureDialog() {
|
|
|
+ String[] items = new String[]{getString(R.string.c_take_picture), getString(R.string.c_photo_album)};
|
|
|
+ AlertDialog.Builder builder = new AlertDialog.Builder(this).setSingleChoiceItems(items, 0,
|
|
|
+ new DialogInterface.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(DialogInterface dialog, int which) {
|
|
|
+ if (which == 0) {
|
|
|
+ takePhoto();
|
|
|
+ } else {
|
|
|
+ selectPhoto();
|
|
|
+ }
|
|
|
+ dialog.dismiss();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ builder.show();
|
|
|
+ }
|
|
|
+ private void showPictureActionDialog(final int position) {
|
|
|
+ String[] items = new String[]{getString(R.string.look_over), getString(R.string.common_delete)};
|
|
|
+ AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle(R.string.pictures)
|
|
|
+ .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(DialogInterface dialog, int which) {
|
|
|
+ if (which == 0) {// 查看
|
|
|
+ Intent intent = new Intent(ct, MultiImagePreviewActivity.class);
|
|
|
+ intent.putExtra(AppConstant.EXTRA_IMAGES, mPhotoList);
|
|
|
+ intent.putExtra(AppConstant.EXTRA_POSITION, position);
|
|
|
+ intent.putExtra(AppConstant.EXTRA_CHANGE_SELECTED, false);
|
|
|
+ startActivity(intent);
|
|
|
+ } else {// 删除
|
|
|
+ deletePhoto(position);
|
|
|
+ }
|
|
|
+ dialog.dismiss();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ builder.show();
|
|
|
+ }
|
|
|
+ private void deletePhoto(final int position) {
|
|
|
+ mPhotoList.remove(position);
|
|
|
+ mAdapter.notifyDataSetInvalidated();
|
|
|
+ }
|
|
|
+ private void takePhoto() {
|
|
|
+ mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this, CameraUtil.MEDIA_TYPE_IMAGE);
|
|
|
+ CameraUtil.captureImage(this, mNewPhotoUri, REQUEST_CODE_CAPTURE_PHOTO);
|
|
|
+ }
|
|
|
+ private void selectPhoto() {
|
|
|
+ CameraUtil.pickImageSimple(this, REQUEST_CODE_PICK_PHOTO);
|
|
|
+ }
|
|
|
+}
|