|
@@ -1,10 +1,9 @@
|
|
|
package com.modular.apputils.adapter;
|
|
package com.modular.apputils.adapter;
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
import android.content.Context;
|
|
|
-import android.content.Intent;
|
|
|
|
|
import android.support.annotation.LayoutRes;
|
|
import android.support.annotation.LayoutRes;
|
|
|
import android.support.annotation.NonNull;
|
|
import android.support.annotation.NonNull;
|
|
|
-import android.support.v4.app.FragmentActivity;
|
|
|
|
|
|
|
+import android.support.design.widget.TabLayout;
|
|
|
import android.support.v7.widget.RecyclerView;
|
|
import android.support.v7.widget.RecyclerView;
|
|
|
import android.text.Editable;
|
|
import android.text.Editable;
|
|
|
import android.text.InputType;
|
|
import android.text.InputType;
|
|
@@ -12,24 +11,15 @@ import android.text.TextUtils;
|
|
|
import android.view.LayoutInflater;
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
import android.view.View;
|
|
|
import android.view.ViewGroup;
|
|
import android.view.ViewGroup;
|
|
|
-import android.widget.AdapterView;
|
|
|
|
|
import android.widget.BaseAdapter;
|
|
import android.widget.BaseAdapter;
|
|
|
import android.widget.Button;
|
|
import android.widget.Button;
|
|
|
import android.widget.EditText;
|
|
import android.widget.EditText;
|
|
|
import android.widget.ImageView;
|
|
import android.widget.ImageView;
|
|
|
import android.widget.TextView;
|
|
import android.widget.TextView;
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
|
|
-import com.baidu.cyberplayer.utils.G;
|
|
|
|
|
-import com.chad.library.adapter.base.BaseViewHolder;
|
|
|
|
|
import com.common.LogUtil;
|
|
import com.common.LogUtil;
|
|
|
import com.common.data.ListUtils;
|
|
import com.common.data.ListUtils;
|
|
|
-import com.common.file.FileUtils;
|
|
|
|
|
-import com.core.model.SelectBean;
|
|
|
|
|
-import com.core.utils.ToastUtil;
|
|
|
|
|
import com.core.widget.listener.EditChangeListener;
|
|
import com.core.widget.listener.EditChangeListener;
|
|
|
-import com.core.widget.view.Activity.SelectActivity;
|
|
|
|
|
import com.core.widget.view.MyGridView;
|
|
import com.core.widget.view.MyGridView;
|
|
|
import com.me.imageloader.ImageLoaderUtil;
|
|
import com.me.imageloader.ImageLoaderUtil;
|
|
|
import com.modular.apputils.R;
|
|
import com.modular.apputils.R;
|
|
@@ -38,9 +28,7 @@ import com.modular.apputils.utils.BillTypeChangeUtils;
|
|
|
import com.modular.apputils.widget.VeriftyDialog;
|
|
import com.modular.apputils.widget.VeriftyDialog;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
-import java.util.LinkedHashSet;
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
-import java.util.Set;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 录入单据列表item 共2种类型
|
|
* 录入单据列表item 共2种类型
|
|
@@ -53,6 +41,9 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
protected List<BillGroupModel> mBillGroupModels;
|
|
protected List<BillGroupModel> mBillGroupModels;
|
|
|
protected List<BillGroupModel.BillModel> mShowBillModels;
|
|
protected List<BillGroupModel.BillModel> mShowBillModels;
|
|
|
protected OnAdapterListener mOnAdapterListener;
|
|
protected OnAdapterListener mOnAdapterListener;
|
|
|
|
|
+ protected int mTabIndex = -1;
|
|
|
|
|
+ private List<BillGroupModel> mOldTabModels;
|
|
|
|
|
+ private int mTabPosition;
|
|
|
|
|
|
|
|
public BillAdapter(Context ct, List<BillGroupModel> mBillGroupModels, OnAdapterListener mOnAdapterListener) {
|
|
public BillAdapter(Context ct, List<BillGroupModel> mBillGroupModels, OnAdapterListener mOnAdapterListener) {
|
|
|
this.ct = ct;
|
|
this.ct = ct;
|
|
@@ -108,18 +99,28 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
}
|
|
}
|
|
|
for (int i = 0; i < mBillGroupModels.size(); i++) {
|
|
for (int i = 0; i < mBillGroupModels.size(); i++) {
|
|
|
BillGroupModel e = mBillGroupModels.get(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));
|
|
|
|
|
|
|
+ if (e != null) {
|
|
|
|
|
+ List<BillGroupModel.GridTab> gridTabs = e.getGridTabs();
|
|
|
|
|
+ if (gridTabs != null && gridTabs.size() > 0) {
|
|
|
|
|
+ BillGroupModel.BillModel mTabBillModel = new BillGroupModel.BillModel();
|
|
|
|
|
+ mTabBillModel.setType(BillGroupModel.Constants.TYPE_TAB);
|
|
|
|
|
+ mTabBillModel.setTabList(gridTabs);
|
|
|
|
|
+ mTabBillModel.setGroupIndex(i);
|
|
|
|
|
+ mShowBillModels.add(mTabBillModel);
|
|
|
|
|
+ } else if (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));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -152,7 +153,11 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
@Override
|
|
@Override
|
|
|
public int getItemViewType(int position) {
|
|
public int getItemViewType(int position) {
|
|
|
if (mShowBillModels != null && mShowBillModels.size() > position) {
|
|
if (mShowBillModels != null && mShowBillModels.size() > position) {
|
|
|
- return BillTypeChangeUtils.getItemViewType(mShowBillModels.get(position).getType());
|
|
|
|
|
|
|
+ int itemViewType = BillTypeChangeUtils.getItemViewType(mShowBillModels.get(position).getType());
|
|
|
|
|
+ if (itemViewType == 111) {
|
|
|
|
|
+ mTabIndex = position;
|
|
|
|
|
+ }
|
|
|
|
|
+ return itemViewType;
|
|
|
}
|
|
}
|
|
|
return super.getItemViewType(position);
|
|
return super.getItemViewType(position);
|
|
|
}
|
|
}
|
|
@@ -174,6 +179,9 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
case 110:
|
|
case 110:
|
|
|
viewHolder = new AddViewHolder(parent, R.layout.item_bill_add);
|
|
viewHolder = new AddViewHolder(parent, R.layout.item_bill_add);
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case 111:
|
|
|
|
|
+ viewHolder = new TabViewHolder(parent, R.layout.item_bill_tab);
|
|
|
|
|
+ break;
|
|
|
default:
|
|
default:
|
|
|
viewHolder = new BaseViewHolder(parent, R.layout.item_bill_title) {
|
|
viewHolder = new BaseViewHolder(parent, R.layout.item_bill_title) {
|
|
|
@Override
|
|
@Override
|
|
@@ -283,6 +291,30 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ class TabViewHolder extends BaseViewHolder {
|
|
|
|
|
+ TabLayout mTabLayout;
|
|
|
|
|
+
|
|
|
|
|
+ public TabViewHolder(ViewGroup parent, int layoutId) {
|
|
|
|
|
+ super(parent, layoutId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void initView(View view) {
|
|
|
|
|
+ mTabLayout = (TabLayout) view.findViewById(R.id.bill_tab_tl);
|
|
|
|
|
+ mTabLayout.setTabMode(TabLayout.MODE_FIXED);
|
|
|
|
|
+ final List<BillGroupModel.GridTab> tabList = mShowBillModels.get(mTabIndex).getTabList();
|
|
|
|
|
+ if (tabList != null && tabList.size() > 0) {
|
|
|
|
|
+ for (int i = 0; i < tabList.size(); i++) {
|
|
|
|
|
+ BillGroupModel.GridTab gridTab = tabList.get(i);
|
|
|
|
|
+ if (gridTab != null) {
|
|
|
|
|
+ mTabLayout.addTab(mTabLayout.newTab().setText(gridTab.getTitle()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
|
|
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
|
|
@@ -299,6 +331,8 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
bindAddView((AddViewHolder) holder, model, position);
|
|
bindAddView((AddViewHolder) holder, model, position);
|
|
|
} else if (holder instanceof EnclosureViewHolder) {
|
|
} else if (holder instanceof EnclosureViewHolder) {
|
|
|
bindEnclosureView((EnclosureViewHolder) holder, model, position);
|
|
bindEnclosureView((EnclosureViewHolder) holder, model, position);
|
|
|
|
|
+ } else if (holder instanceof TabViewHolder) {
|
|
|
|
|
+ bindTabView((TabViewHolder) holder, model, position);
|
|
|
}
|
|
}
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
LogUtil.i("gong", position + " e=" + e.getMessage());
|
|
LogUtil.i("gong", position + " e=" + e.getMessage());
|
|
@@ -306,11 +340,20 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void bindTabView(TabViewHolder holder, final BillGroupModel.BillModel model, final int position) {
|
|
|
|
|
+ if (holder.mTabLayout.getTag() != null && holder.mTabLayout.getTag() instanceof MyTabChangeListener) {
|
|
|
|
|
+ holder.mTabLayout.removeOnTabSelectedListener((TabLayout.OnTabSelectedListener) holder.mTabLayout.getTag());
|
|
|
|
|
+ }
|
|
|
|
|
+ MyTabChangeListener myTabChangeListener = new MyTabChangeListener(holder.mTabLayout, position);
|
|
|
|
|
+ holder.mTabLayout.addOnTabSelectedListener(myTabChangeListener);
|
|
|
|
|
+ holder.mTabLayout.setTag(myTabChangeListener);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//绑定附件字段
|
|
//绑定附件字段
|
|
|
private void bindEnclosureView(EnclosureViewHolder holder, BillGroupModel.BillModel model, int position) {
|
|
private void bindEnclosureView(EnclosureViewHolder holder, BillGroupModel.BillModel model, int position) {
|
|
|
if (model != null) {
|
|
if (model != null) {
|
|
|
holder.captionTv.setText(model.getCaption());
|
|
holder.captionTv.setText(model.getCaption());
|
|
|
- holder.muchInputTv.setVisibility(model.getAllowBlank().equals("F") ? View.VISIBLE :View.GONE);
|
|
|
|
|
|
|
+ holder.muchInputTv.setVisibility(model.getAllowBlank().equals("F") ? View.VISIBLE : View.GONE);
|
|
|
EnclosureAdapter mEnclosureAdapter = null;
|
|
EnclosureAdapter mEnclosureAdapter = null;
|
|
|
if (holder.ffGv.getTag(R.id.tag_key) != null && holder.ffGv.getTag(R.id.tag_key) instanceof EnclosureAdapter) {
|
|
if (holder.ffGv.getTag(R.id.tag_key) != null && holder.ffGv.getTag(R.id.tag_key) instanceof EnclosureAdapter) {
|
|
|
mEnclosureAdapter = (EnclosureAdapter) holder.ffGv.getTag(R.id.tag_key);
|
|
mEnclosureAdapter = (EnclosureAdapter) holder.ffGv.getTag(R.id.tag_key);
|
|
@@ -350,6 +393,11 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
mInputViewHolder.valuesEd.setFocusable(false);
|
|
mInputViewHolder.valuesEd.setFocusable(false);
|
|
|
mInputViewHolder.valuesEd.setClickable(true);
|
|
mInputViewHolder.valuesEd.setClickable(true);
|
|
|
mInputViewHolder.valuesEd.setOnClickListener(null);
|
|
mInputViewHolder.valuesEd.setOnClickListener(null);
|
|
|
|
|
+ if (BillTypeChangeUtils.isSelect(model.getType())) {
|
|
|
|
|
+ mInputViewHolder.valuesEd.setHint("请选择");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ mInputViewHolder.valuesEd.setHint("请输入");
|
|
|
|
|
+ }
|
|
|
} else if (BillTypeChangeUtils.isSelect(model.getType())) {
|
|
} else if (BillTypeChangeUtils.isSelect(model.getType())) {
|
|
|
//选择类型
|
|
//选择类型
|
|
|
mInputViewHolder.valuesEd.setHint("请选择");
|
|
mInputViewHolder.valuesEd.setHint("请选择");
|
|
@@ -432,6 +480,7 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
protected void addGroups(int mGroupIndex) {
|
|
protected void addGroups(int mGroupIndex) {
|
|
|
BillGroupModel mBillGroupModel = mBillGroupModels.get(mGroupIndex);
|
|
BillGroupModel mBillGroupModel = mBillGroupModels.get(mGroupIndex);
|
|
|
mBillGroupModel.setLastInType(false);
|
|
mBillGroupModel.setLastInType(false);
|
|
|
|
|
+
|
|
|
BillGroupModel newBillGroupModel = new BillGroupModel();
|
|
BillGroupModel newBillGroupModel = new BillGroupModel();
|
|
|
newBillGroupModel.setForm(mBillGroupModel.isForm());
|
|
newBillGroupModel.setForm(mBillGroupModel.isForm());
|
|
|
newBillGroupModel.setGroup(mBillGroupModel.getGroup());
|
|
newBillGroupModel.setGroup(mBillGroupModel.getGroup());
|
|
@@ -442,6 +491,15 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
}
|
|
}
|
|
|
mBillGroupModels.add(mGroupIndex + 1, newBillGroupModel);
|
|
mBillGroupModels.add(mGroupIndex + 1, newBillGroupModel);
|
|
|
setBillGroupModels(mBillGroupModels);
|
|
setBillGroupModels(mBillGroupModels);
|
|
|
|
|
+
|
|
|
|
|
+ if (mTabIndex != -1) {
|
|
|
|
|
+ BillGroupModel.BillModel tabModel = mShowBillModels.get(mTabIndex);
|
|
|
|
|
+ if (tabModel != null) {
|
|
|
|
|
+ tabModel.getTabList().get(mTabPosition)
|
|
|
|
|
+ .setBillGroupModels(mBillGroupModels.subList(mGroupIndex, mBillGroupModels.size()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
notifyDataSetChanged();
|
|
notifyDataSetChanged();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -464,6 +522,53 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ public class MyTabChangeListener implements TabLayout.OnTabSelectedListener {
|
|
|
|
|
+ private TabLayout mTabLayout;
|
|
|
|
|
+ private int mPosition;
|
|
|
|
|
+
|
|
|
|
|
+ public MyTabChangeListener(TabLayout tabLayout, int position) {
|
|
|
|
|
+ mTabLayout = tabLayout;
|
|
|
|
|
+ mPosition = position;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onTabSelected(TabLayout.Tab tab) {
|
|
|
|
|
+ if (this.mPosition >= 0 && mShowBillModels != null && mShowBillModels.size() > this.mPosition && mTabLayout != null) {
|
|
|
|
|
+ mTabPosition = tab.getPosition();
|
|
|
|
|
+ BillGroupModel.BillModel model = mShowBillModels.get(mPosition);
|
|
|
|
|
+ if (model != null) {
|
|
|
|
|
+ List<BillGroupModel.GridTab> tabList = model.getTabList();
|
|
|
|
|
+ int tabGroupIndex = model.getGroupIndex();
|
|
|
|
|
+
|
|
|
|
|
+ List<BillGroupModel> newGroupModels = new ArrayList<>();
|
|
|
|
|
+ List<BillGroupModel> billGroupModels = mBillGroupModels.subList(0, tabGroupIndex + 1);
|
|
|
|
|
+ mOldTabModels = mBillGroupModels.subList(tabGroupIndex + 1, mBillGroupModels.size());
|
|
|
|
|
+
|
|
|
|
|
+ newGroupModels.addAll(billGroupModels);
|
|
|
|
|
+ BillGroupModel.GridTab gridTab = tabList.get(mTabPosition);
|
|
|
|
|
+ if (gridTab != null) {
|
|
|
|
|
+ List<BillGroupModel> tabGroupModels = gridTab.getBillGroupModels();
|
|
|
|
|
+
|
|
|
|
|
+ newGroupModels.addAll(tabGroupModels);
|
|
|
|
|
+ }
|
|
|
|
|
+ setBillGroupModels(newGroupModels);
|
|
|
|
|
+ notifyDataSetChanged();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onTabUnselected(TabLayout.Tab tab) {
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onTabReselected(TabLayout.Tab tab) {
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
private void showDeleteGroup(final int groupIndex) {
|
|
private void showDeleteGroup(final int groupIndex) {
|
|
|
new VeriftyDialog.Builder(ct)
|
|
new VeriftyDialog.Builder(ct)
|
|
|
.setTitle(ct.getString(R.string.app_name))
|
|
.setTitle(ct.getString(R.string.app_name))
|
|
@@ -478,7 +583,6 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void deleteGroup(int groupIndex) {
|
|
public void deleteGroup(int groupIndex) {
|