|
|
@@ -0,0 +1,571 @@
|
|
|
+package com.uas.appworks.adapter;
|
|
|
+
|
|
|
+import android.content.Context;
|
|
|
+import android.support.annotation.LayoutRes;
|
|
|
+import android.support.annotation.NonNull;
|
|
|
+import android.support.v7.widget.RecyclerView;
|
|
|
+import android.text.Editable;
|
|
|
+import android.text.TextUtils;
|
|
|
+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.EditText;
|
|
|
+import android.widget.ImageView;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import com.common.LogUtil;
|
|
|
+import com.common.data.ListUtils;
|
|
|
+import com.core.widget.listener.EditChangeListener;
|
|
|
+import com.core.widget.view.MyGridView;
|
|
|
+import com.core.widget.view.SwitchView;
|
|
|
+import com.me.imageloader.ImageLoaderUtil;
|
|
|
+import com.modular.apputils.model.BillGroupModel;
|
|
|
+import com.modular.apputils.utils.BillTypeChangeUtils;
|
|
|
+import com.modular.apputils.widget.VeriftyDialog;
|
|
|
+import com.uas.appworks.R;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+public class CustomerBillInputAdapter extends RecyclerView.Adapter<CustomerBillInputAdapter.BaseViewHolder> {
|
|
|
+
|
|
|
+ private Context ct;
|
|
|
+ private List<BillGroupModel> mBillGroupModels;
|
|
|
+ private List<BillGroupModel.BillModel> mShowBillModels;
|
|
|
+ private CustomerBillInputAdapter.OnAdapterListener mOnAdapterListener;
|
|
|
+ private boolean addContact = true;//保存后继续新增联系人
|
|
|
+
|
|
|
+ public CustomerBillInputAdapter(Context ct, List<BillGroupModel> mBillGroupModels, CustomerBillInputAdapter.OnAdapterListener mOnAdapterListener) {
|
|
|
+ this.ct = ct;
|
|
|
+ this.mBillGroupModels = mBillGroupModels;
|
|
|
+ this.mOnAdapterListener = mOnAdapterListener;
|
|
|
+ changeBillModel();
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isAddContact() {
|
|
|
+ return addContact;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateBillModelValues(int position, String values, String display) {
|
|
|
+ if (position >= 0 && position < ListUtils.getSize(mShowBillModels)) {
|
|
|
+ mShowBillModels.get(position).setValue(values);
|
|
|
+ mShowBillModels.get(position).setDisplay(display);
|
|
|
+ notifyItemChanged(position);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addBillModelData(int position, String values, String display) {
|
|
|
+ if (position >= 0 && position < ListUtils.getSize(mShowBillModels)) {
|
|
|
+ if (mShowBillModels.get(position).getLocalDatas() == null) {
|
|
|
+ mShowBillModels.get(position).setLocalDatas(new ArrayList<BillGroupModel.LocalData>());
|
|
|
+ }
|
|
|
+ BillGroupModel.LocalData data = new BillGroupModel.LocalData();
|
|
|
+ data.value = values;
|
|
|
+ data.display = display;
|
|
|
+ mShowBillModels.get(position).getLocalDatas().add(data);
|
|
|
+ notifyItemChanged(position);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setBillGroupModels(List<BillGroupModel> mBillGroupModels) {
|
|
|
+ this.mBillGroupModels = mBillGroupModels;
|
|
|
+ changeBillModel();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当外界的因素引起mBillGroupModels变化时候,通过遍历将mBillGroupModels转成mShowBillModels进行显示
|
|
|
+ */
|
|
|
+ private void changeBillModel() {
|
|
|
+ if (mShowBillModels == null) {
|
|
|
+ mShowBillModels = new ArrayList<>();
|
|
|
+ } else {
|
|
|
+ mShowBillModels.clear();
|
|
|
+ }
|
|
|
+ for (int i = 0; i < mBillGroupModels.size(); i++) {
|
|
|
+ BillGroupModel e = mBillGroupModels.get(i);
|
|
|
+ if (e != null && e.getShowBillFields() != null && !e.getShowBillFields().isEmpty()) {
|
|
|
+ if (!TextUtils.isEmpty(e.getGroup())) {
|
|
|
+ BillGroupModel.BillModel mTitleBillModel = new BillGroupModel.BillModel();
|
|
|
+ mTitleBillModel.setGroupIndex(i);
|
|
|
+ mTitleBillModel.setType(BillGroupModel.Constants.TYPE_TITLE);
|
|
|
+ mTitleBillModel.setCaption(e.getGroup());
|
|
|
+ mTitleBillModel.setAllowBlank(e.isDeleteAble() ? "T" : "F");
|
|
|
+ mShowBillModels.add(mTitleBillModel);
|
|
|
+ }
|
|
|
+ mShowBillModels.addAll(e.getShowBillFields());
|
|
|
+ if (!e.isForm() && e.isLastInType()) {
|
|
|
+ mShowBillModels.add(getAddModel(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private BillGroupModel.BillModel getAddModel(int index) {
|
|
|
+ BillGroupModel.BillModel mTitleBillModel = new BillGroupModel.BillModel();
|
|
|
+ mTitleBillModel.setGroupIndex(index);
|
|
|
+ mTitleBillModel.setType(BillGroupModel.Constants.TYPE_ADD);
|
|
|
+ mTitleBillModel.setCaption("添加单据");
|
|
|
+ return mTitleBillModel;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<BillGroupModel> getBillGroupModels() {
|
|
|
+ return mBillGroupModels;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BillGroupModel getBillGroupModel(int position) {
|
|
|
+ if (position >= 0 && ListUtils.getSize(mBillGroupModels) > position) {
|
|
|
+ return mBillGroupModels.get(position);
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getItemViewType(int position) {
|
|
|
+ if (mShowBillModels != null && mShowBillModels.size() > position) {
|
|
|
+ return BillTypeChangeUtils.getItemViewType(mShowBillModels.get(position).getType());
|
|
|
+ } else {
|
|
|
+ return 220;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @NonNull
|
|
|
+ @Override
|
|
|
+ public CustomerBillInputAdapter.BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
|
|
+ CustomerBillInputAdapter.BaseViewHolder viewHolder = null;
|
|
|
+ switch (viewType) {
|
|
|
+ case 0:
|
|
|
+ viewHolder = new CustomerBillInputAdapter.TitleViewHolder(parent, R.layout.item_bill_title);
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ viewHolder = new CustomerBillInputAdapter.InputViewHolder(parent, R.layout.item_bill_input_select);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ viewHolder = new CustomerBillInputAdapter.EnclosureViewHolder(parent, R.layout.item_bill_enclosure);
|
|
|
+ break;//附件类型
|
|
|
+ case 110:
|
|
|
+ viewHolder = new CustomerBillInputAdapter.AddViewHolder(parent, R.layout.item_bill_add);
|
|
|
+ break;
|
|
|
+ case 220://个性化添加是否保存后继续添加联系人
|
|
|
+ viewHolder = new CustomerBillInputAdapter.AddcontentViewHolder(parent, R.layout.item_customer_bill_add_contact);
|
|
|
+
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ viewHolder = new CustomerBillInputAdapter.BaseViewHolder(parent, R.layout.item_bill_title) {
|
|
|
+ @Override
|
|
|
+ void initView(View view) {
|
|
|
+
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ return viewHolder;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getItemCount() {
|
|
|
+ return mShowBillModels == null ? 1 : mShowBillModels.size()+1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private LayoutInflater mLayoutInflater;
|
|
|
+
|
|
|
+ public LayoutInflater getLayoutInflater() {
|
|
|
+ if (mLayoutInflater == null) {
|
|
|
+ mLayoutInflater = LayoutInflater.from(ct);
|
|
|
+ }
|
|
|
+ return mLayoutInflater;
|
|
|
+ }
|
|
|
+
|
|
|
+ abstract class BaseViewHolder extends RecyclerView.ViewHolder {
|
|
|
+
|
|
|
+ public BaseViewHolder(ViewGroup parent, @LayoutRes int layoutId) {
|
|
|
+ this(getLayoutInflater().inflate(layoutId, parent, false));
|
|
|
+ }
|
|
|
+
|
|
|
+ abstract void initView(View view);
|
|
|
+
|
|
|
+ public BaseViewHolder(View itemView) {
|
|
|
+ super(itemView);
|
|
|
+ initView(itemView);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ class AddcontentViewHolder extends CustomerBillInputAdapter.BaseViewHolder {
|
|
|
+ private SwitchView saveContactSv;
|
|
|
+
|
|
|
+ public AddcontentViewHolder(ViewGroup parent, int layoutId) {
|
|
|
+ super(parent, layoutId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ void initView(View view) {
|
|
|
+ saveContactSv = (SwitchView) view.findViewById(R.id.saveContactSv);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ class AddViewHolder extends CustomerBillInputAdapter.BaseViewHolder {
|
|
|
+ private TextView addTv;
|
|
|
+
|
|
|
+ public AddViewHolder(ViewGroup parent, int layoutId) {
|
|
|
+ super(parent, layoutId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ void initView(View view) {
|
|
|
+ addTv = (TextView) view.findViewById(R.id.addTv);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //选择和输入类型
|
|
|
+ class InputViewHolder extends CustomerBillInputAdapter.BaseViewHolder {
|
|
|
+ private TextView captionTv;
|
|
|
+ private TextView muchInputTv;
|
|
|
+ private ImageView selectIv;
|
|
|
+ private EditText valuesEd;
|
|
|
+
|
|
|
+ public InputViewHolder(ViewGroup parent, int layoutId) {
|
|
|
+ super(parent, layoutId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ void initView(View itemView) {
|
|
|
+ captionTv = (TextView) itemView.findViewById(R.id.captionTv);
|
|
|
+ muchInputTv = (TextView) itemView.findViewById(R.id.muchInputTv);
|
|
|
+ selectIv = (ImageView) itemView.findViewById(R.id.selectIv);
|
|
|
+ valuesEd = (EditText) itemView.findViewById(R.id.valuesEd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //附件类型
|
|
|
+ class EnclosureViewHolder extends CustomerBillInputAdapter.BaseViewHolder {
|
|
|
+ private TextView captionTv;
|
|
|
+ private TextView muchInputTv;
|
|
|
+ private MyGridView ffGv;
|
|
|
+
|
|
|
+ public EnclosureViewHolder(ViewGroup parent, int layoutId) {
|
|
|
+ super(parent, layoutId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ void initView(View itemView) {
|
|
|
+ captionTv = (TextView) itemView.findViewById(R.id.captionTv);
|
|
|
+ muchInputTv = (TextView) itemView.findViewById(R.id.muchInputTv);
|
|
|
+ ffGv = (MyGridView) itemView.findViewById(R.id.ffGv);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ class TitleViewHolder extends CustomerBillInputAdapter.BaseViewHolder {
|
|
|
+ private TextView tvTitle;
|
|
|
+ private TextView deleteTv;
|
|
|
+
|
|
|
+ public TitleViewHolder(ViewGroup parent, int layoutId) {
|
|
|
+ super(parent, layoutId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ void initView(View view) {
|
|
|
+ tvTitle = (TextView) view.findViewById(R.id.tv_title);
|
|
|
+ deleteTv = (TextView) view.findViewById(R.id.deleteTv);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onBindViewHolder(@NonNull CustomerBillInputAdapter.BaseViewHolder holder, int position) {
|
|
|
+ BillGroupModel.BillModel model = null;
|
|
|
+ if (mShowBillModels != null && mShowBillModels.size() > position) {
|
|
|
+ model = mShowBillModels.get(position);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ if (holder instanceof CustomerBillInputAdapter.InputViewHolder) {
|
|
|
+ bindInputView((CustomerBillInputAdapter.InputViewHolder) holder, model, position);
|
|
|
+ } else if (holder instanceof CustomerBillInputAdapter.TitleViewHolder) {
|
|
|
+ bindTitleView((CustomerBillInputAdapter.TitleViewHolder) holder, model, position);
|
|
|
+ } else if (holder instanceof CustomerBillInputAdapter.AddViewHolder) {
|
|
|
+ bindAddView((CustomerBillInputAdapter.AddViewHolder) holder, model, position);
|
|
|
+ } else if (holder instanceof CustomerBillInputAdapter.EnclosureViewHolder) {
|
|
|
+ bindEnclosureView((CustomerBillInputAdapter.EnclosureViewHolder) holder, model, position);
|
|
|
+ } else if (holder instanceof AddcontentViewHolder) {
|
|
|
+ bindAddContentView((AddcontentViewHolder) holder, model, position);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ LogUtil.i("gong", position + " e=" + e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void bindAddContentView(AddcontentViewHolder holder, BillGroupModel.BillModel model, int position) {
|
|
|
+ holder.saveContactSv.setOnCheckedChangeListener(new SwitchView.OnCheckedChangeListener() {
|
|
|
+ @Override
|
|
|
+ public void onCheckedChanged(View view, boolean isChecked) {
|
|
|
+ addContact = isChecked;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ //绑定附件字段
|
|
|
+ private void bindEnclosureView(CustomerBillInputAdapter.EnclosureViewHolder holder, BillGroupModel.BillModel model, int position) {
|
|
|
+ if (model != null) {
|
|
|
+ holder.captionTv.setText(model.getCaption());
|
|
|
+ holder.muchInputTv.setVisibility(model.getAllowBlank().equals("T") ? View.GONE : View.VISIBLE);
|
|
|
+ CustomerBillInputAdapter.EnclosureAdapter mEnclosureAdapter = null;
|
|
|
+ if (holder.ffGv.getTag(R.id.tag_key) != null && holder.ffGv.getTag(R.id.tag_key) instanceof CustomerBillInputAdapter.EnclosureAdapter) {
|
|
|
+ mEnclosureAdapter = (CustomerBillInputAdapter.EnclosureAdapter) holder.ffGv.getTag(R.id.tag_key);
|
|
|
+ mEnclosureAdapter.setLocalDatas(model.getLocalDatas());
|
|
|
+ mEnclosureAdapter.setPosition(position);
|
|
|
+ } else {
|
|
|
+ mEnclosureAdapter = new CustomerBillInputAdapter.EnclosureAdapter(position, model.getLocalDatas());
|
|
|
+ }
|
|
|
+ holder.ffGv.setAdapter(mEnclosureAdapter);
|
|
|
+ holder.ffGv.setTag(model);
|
|
|
+ holder.ffGv.setTag(R.id.tag_key2, position);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void bindAddView(CustomerBillInputAdapter.AddViewHolder mAddViewHolder, BillGroupModel.BillModel model, int position) throws Exception {
|
|
|
+ if (model != null) {
|
|
|
+ mAddViewHolder.addTv.setTag(model.getGroupIndex());
|
|
|
+ mAddViewHolder.addTv.setOnClickListener(mOnClickListener);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void bindInputView(CustomerBillInputAdapter.InputViewHolder mInputViewHolder, BillGroupModel.BillModel model, int position) throws Exception {
|
|
|
+ if (model != null) {
|
|
|
+ if (mInputViewHolder.valuesEd.getTag() != null && mInputViewHolder.valuesEd.getTag() instanceof CustomerBillInputAdapter.TextChangListener) {
|
|
|
+ mInputViewHolder.valuesEd.removeTextChangedListener((CustomerBillInputAdapter.TextChangListener) mInputViewHolder.valuesEd.getTag());
|
|
|
+ }
|
|
|
+ mInputViewHolder.captionTv.setText(model.getCaption());
|
|
|
+ mInputViewHolder.muchInputTv.setVisibility(model.getAllowBlank().equals("T") ? View.GONE : View.VISIBLE);
|
|
|
+ mInputViewHolder.valuesEd.setText(model.getValue());
|
|
|
+ if (model.getReadOnly().equals("T")) {
|
|
|
+ mInputViewHolder.valuesEd.setFocusable(false);
|
|
|
+ mInputViewHolder.valuesEd.setClickable(true);
|
|
|
+ mInputViewHolder.valuesEd.setOnClickListener(null);
|
|
|
+ } else if (BillTypeChangeUtils.isSelect(model.getType())) {
|
|
|
+ //选择类型
|
|
|
+ mInputViewHolder.valuesEd.setHint("请选择");
|
|
|
+ mInputViewHolder.valuesEd.setFocusable(false);
|
|
|
+ mInputViewHolder.valuesEd.setClickable(true);
|
|
|
+ mInputViewHolder.selectIv.setVisibility(View.VISIBLE);
|
|
|
+ mInputViewHolder.valuesEd.setTag(R.id.tag, position);
|
|
|
+ mInputViewHolder.valuesEd.setTag(R.id.tag2, model);
|
|
|
+ mInputViewHolder.valuesEd.setOnClickListener(mOnClickListener);
|
|
|
+ } else {
|
|
|
+ //输入类型
|
|
|
+ mInputViewHolder.valuesEd.setHint("请输入");
|
|
|
+ mInputViewHolder.selectIv.setVisibility(View.GONE);
|
|
|
+ mInputViewHolder.valuesEd.setFocusable(true);
|
|
|
+ mInputViewHolder.valuesEd.setClickable(false);
|
|
|
+ mInputViewHolder.valuesEd.setFocusableInTouchMode(true);
|
|
|
+ CustomerBillInputAdapter.TextChangListener mTextChangListener = new CustomerBillInputAdapter.TextChangListener(mInputViewHolder.valuesEd, position);
|
|
|
+ mInputViewHolder.valuesEd.setTag(mTextChangListener);
|
|
|
+ mInputViewHolder.valuesEd.addTextChangedListener(mTextChangListener);
|
|
|
+ mInputViewHolder.valuesEd.setOnClickListener(null);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void bindTitleView(CustomerBillInputAdapter.TitleViewHolder mTitleViewHolder, BillGroupModel.BillModel model, int position) throws Exception {
|
|
|
+ if (model != null) {
|
|
|
+ if (model.getAllowBlank().equals("T")) {
|
|
|
+ mTitleViewHolder.deleteTv.setVisibility(View.VISIBLE);
|
|
|
+ mTitleViewHolder.deleteTv.setTag(model.getGroupIndex());
|
|
|
+ mTitleViewHolder.deleteTv.setOnClickListener(mOnClickListener);
|
|
|
+ } else {
|
|
|
+ mTitleViewHolder.deleteTv.setVisibility(View.GONE);
|
|
|
+ mTitleViewHolder.deleteTv.setOnClickListener(null);
|
|
|
+ }
|
|
|
+ mTitleViewHolder.tvTitle.setText(model.getCaption());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
|
|
|
+ if (mOnAdapterListener != null && adapterView.getTag() != null && adapterView.getTag(R.id.tag_key2) != null) {
|
|
|
+ if (adapterView.getTag() instanceof BillGroupModel.BillModel && adapterView.getTag(R.id.tag_key2) instanceof Integer) {
|
|
|
+ int itemIndex = (int) adapterView.getTag(R.id.tag_key2);
|
|
|
+ BillGroupModel.BillModel model = (BillGroupModel.BillModel) adapterView.getTag();
|
|
|
+ mOnAdapterListener.toEnclosureSelect(position);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ private View.OnClickListener mOnClickListener = new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View view) {
|
|
|
+ if (view.getId() == R.id.deleteTv) {
|
|
|
+ if (view.getTag() != null && view.getTag() instanceof Integer) {
|
|
|
+ showDeleteGroup((Integer) view.getTag());
|
|
|
+ }
|
|
|
+ } else if (view.getId() == R.id.valuesEd) {
|
|
|
+ if (mOnAdapterListener != null) {
|
|
|
+ if (view.getTag(R.id.tag2) != null && view.getTag(R.id.tag2) instanceof BillGroupModel.BillModel) {
|
|
|
+ int position = view.getTag(R.id.tag) != null && view.getTag(R.id.tag) instanceof Integer ? ((int) view.getTag(R.id.tag)) : 0;
|
|
|
+ mOnAdapterListener.toSelect(position, (BillGroupModel.BillModel) view.getTag(R.id.tag2));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (view.getId() == R.id.addTv) {
|
|
|
+ if (view.getTag() != null && view.getTag() instanceof Integer) {
|
|
|
+ int groupIndex = (int) view.getTag();
|
|
|
+ BillGroupModel mBillGroupModel = mBillGroupModels.get(groupIndex);
|
|
|
+ mBillGroupModel.setLastInType(false);
|
|
|
+ BillGroupModel newBillGroupModel = new BillGroupModel();
|
|
|
+ newBillGroupModel.setForm(mBillGroupModel.isForm());
|
|
|
+ newBillGroupModel.setGroup(mBillGroupModel.getGroup());
|
|
|
+ newBillGroupModel.setDeleteAble(true);
|
|
|
+ newBillGroupModel.setLastInType(true);
|
|
|
+ for (BillGroupModel.BillModel e : mBillGroupModel.getShowBillFields()) {
|
|
|
+ newBillGroupModel.addShow(new BillGroupModel.BillModel(e));
|
|
|
+ }
|
|
|
+ mBillGroupModels.add(groupIndex + 1, newBillGroupModel);
|
|
|
+ setBillGroupModels(mBillGroupModels);
|
|
|
+ notifyDataSetChanged();
|
|
|
+
|
|
|
+ }
|
|
|
+ } else if (R.id.btn_del == view.getId()) {
|
|
|
+ if (view.getTag(R.id.tag_key) != null && view.getTag(R.id.tag_key2) != null
|
|
|
+ && view.getTag(R.id.tag_key) instanceof Integer && view.getTag(R.id.tag_key2) instanceof Integer) {
|
|
|
+ int position = (int) view.getTag(R.id.tag_key2);//当前在主列表的item
|
|
|
+ int index = (int) view.getTag(R.id.tag_key);//当前在子列表的item
|
|
|
+ if (position >= 0 && position < ListUtils.getSize(mShowBillModels)
|
|
|
+ && ListUtils.getSize(mShowBillModels.get(position).getLocalDatas()) > index) {
|
|
|
+ mShowBillModels.get(position).getLocalDatas().remove(index);
|
|
|
+ notifyItemChanged(position);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (R.id.content == view.getId()) {
|
|
|
+ if (view.getTag(R.id.tag_key2) != null && view.getTag(R.id.tag_key2) instanceof Integer) {
|
|
|
+ int position = (int) view.getTag(R.id.tag_key2);//当前在主列表的item
|
|
|
+ if (mOnAdapterListener != null && position >= 0 && position < ListUtils.getSize(mShowBillModels)) {
|
|
|
+ mOnAdapterListener.toEnclosureSelect(position);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ private class TextChangListener extends EditChangeListener {
|
|
|
+ EditText ed;
|
|
|
+ private int position;
|
|
|
+
|
|
|
+ public TextChangListener(EditText ed, int position) {
|
|
|
+ this.ed = ed;
|
|
|
+ this.position = position;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterTextChanged(Editable s) {
|
|
|
+ if (this.position >= 0 && mShowBillModels != null && mShowBillModels.size() > this.position && ed != null) {
|
|
|
+ String valueEt = ed.getText().toString();
|
|
|
+ mShowBillModels.get(this.position).setValue(valueEt == null ? "" : valueEt);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void showDeleteGroup(final int groupIndex) {
|
|
|
+ new VeriftyDialog.Builder(ct)
|
|
|
+ .setTitle(ct.getString(R.string.app_name))
|
|
|
+ .setContent("是否确认删除该单据?")
|
|
|
+ .build(new VeriftyDialog.OnDialogClickListener() {
|
|
|
+ @Override
|
|
|
+ public void result(boolean clickSure) {
|
|
|
+ if (clickSure) {
|
|
|
+ if (mBillGroupModels != null && mBillGroupModels.size() > groupIndex && groupIndex >= 0) {
|
|
|
+ boolean isLastItem = mBillGroupModels.get(groupIndex).isLastInType();
|
|
|
+ if (isLastItem && groupIndex - 1 > 0 && !mBillGroupModels.get(groupIndex - 1).isForm()) {
|
|
|
+ mBillGroupModels.get(groupIndex - 1).setLastInType(true);
|
|
|
+ }
|
|
|
+ mBillGroupModels.remove(groupIndex);
|
|
|
+ setBillGroupModels(mBillGroupModels);
|
|
|
+ notifyDataSetChanged();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public interface OnAdapterListener {
|
|
|
+ void toSelect(int position, BillGroupModel.BillModel model);
|
|
|
+
|
|
|
+ void toEnclosureSelect(int position);
|
|
|
+ }
|
|
|
+
|
|
|
+ private class EnclosureAdapter extends BaseAdapter {
|
|
|
+ private int position;
|
|
|
+ private List<BillGroupModel.LocalData> localDatas;
|
|
|
+
|
|
|
+ public EnclosureAdapter(int position, List<BillGroupModel.LocalData> localDatas) {
|
|
|
+ this.position = position;
|
|
|
+ this.localDatas = localDatas;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPosition(int position) {
|
|
|
+ this.position = position;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLocalDatas(List<BillGroupModel.LocalData> localDatas) {
|
|
|
+ this.localDatas = localDatas;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getCount() {
|
|
|
+ return ListUtils.getSize(localDatas) < 9 ? (ListUtils.getSize(localDatas) + 1) : ListUtils.getSize(localDatas);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object getItem(int i) {
|
|
|
+ return localDatas.get(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public long getItemId(int i) {
|
|
|
+ return i;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public View getView(int i, View view, ViewGroup viewGroup) {
|
|
|
+ view = getLayoutInflater().inflate(R.layout.item_bill_enclosure_item, null);
|
|
|
+ ImageView content = (ImageView) view.findViewById(R.id.content);
|
|
|
+ TextView tvName = (TextView) view.findViewById(R.id.tv_name);
|
|
|
+ Button btnDel = (Button) view.findViewById(R.id.btn_del);
|
|
|
+ if (ListUtils.getSize(localDatas) > i) {
|
|
|
+ BillGroupModel.LocalData data = localDatas.get(i);
|
|
|
+ btnDel.setVisibility(View.VISIBLE);
|
|
|
+ String name = data.value == null ? "" : data.value;
|
|
|
+ tvName.setText(name);
|
|
|
+ btnDel.setTag(R.id.tag_key2, position);
|
|
|
+ btnDel.setTag(R.id.tag_key, i);
|
|
|
+ btnDel.setOnClickListener(mOnClickListener);
|
|
|
+ if (isImage(name)) {
|
|
|
+ ImageLoaderUtil.getInstance().loadImage(data.display, content);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ tvName.setText("");
|
|
|
+ btnDel.setVisibility(View.GONE);
|
|
|
+ content.setImageResource(R.drawable.add_picture);
|
|
|
+ content.setTag(R.id.tag_key2, position);
|
|
|
+ content.setOnClickListener(mOnClickListener);
|
|
|
+ }
|
|
|
+ return view;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private boolean isImage(String name) {
|
|
|
+ return name.toUpperCase().endsWith("JPEG")
|
|
|
+ || name.toUpperCase().endsWith("JPG")
|
|
|
+ || name.toUpperCase().endsWith("PNG");
|
|
|
+ }
|
|
|
+}
|