万能适配器写法
写这个主要是记录如果在一个界面中加载(切换)十多种不同的布局,如果使用十多个适配器的话就太臃肿和麻烦:如下面的选择切换(每个Item布局都是不一样的):
一、适配器代码
public abstract class StickyListAdapter<T> extends BaseAdapter implements StickyListHeadersAdapter { protected Context mContext; protected List<T> listModel; protected final int mItemLayoutId; protected LayoutInflater mInflater; public StickyListAdapter(Context context, int itemLayoutId, List<T> mDatas) { this.mContext = context; this.listModel = mDatas; this.mItemLayoutId = itemLayoutId; this.mInflater = LayoutInflater.from(mContext); } // public void updateAdapter(int itemLayoutId, List<T> mDatas) // { // this.listModel = mDatas; // this.mItemLayoutId = itemLayoutId; // } @Override public int getCount() { return listModel.size(); } @Override public T getItem(int position) { return listModel.get(position); } @Override public long getItemId(int position) { return position; } @Override public long getHeaderId(int position) { return position; } //************一般写法**************** // @Override // public View getView(int position, View convertView, ViewGroup parent) { // View2Holder vHolder; // if (convertView != null) { // vHolder = (View2Holder) convertView.getTag(); // } else { // convertView = .inflate(R.layout.sticky_tail_item2, parent, false); // vHolder = new View2Holder(convertView); // convertView.setTag(vHolder); // } // vHolder.item2Date.setText(list2Model.get(position).getDT_ACTIONDATE()); // vHolder.item2Event.setText(list2Model.get(position).getST_EVENT()); // vHolder.item2Content.setText(list2Model.get(position).getST_CONTENT()); // vHolder.item2Staff.setText(list2Model.get(position).getST_STAFFID()); // vHolder.item2Status.setText(list2Model.get(position).getNO_STATUS()); // // return convertView; // } //************万能适配写法**************** @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder = getViewHolder(position, convertView, parent); convert(viewHolder, getItem(position)); return viewHolder.getConvertView(); } //抽象方法 public abstract void convert(ViewHolder helper, T item); private ViewHolder getViewHolder(int position, View convertView, ViewGroup parent) { return ViewHolder.get(mContext, convertView, parent, mItemLayoutId, position); } //************万能适配写法**************** @Override public View getHeaderView(int position, View convertView,ViewGroup parent) { HeaderViewHolder hHolder; if (convertView != null) { hHolder = (HeaderViewHolder) convertView.getTag(); } else { convertView = mInflater.inflate(R.layout.sticky_header_item, parent, false); hHolder = new HeaderViewHolder(convertView); convertView.setTag(hHolder); } // hHolder.itemHeader.setText("第" + (position + 1) + "條記錄"); hHolder.itemHeader.setText(mContext.getString(R.string.language_recordNumber,(position + 1))); return convertView; } static class HeaderViewHolder { @BindView(R.id.item_header) TextView itemHeader; HeaderViewHolder(View view) { ButterKnife.bind(this, view); } } }
二、主界面
1.主界面布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/top1_layout" />//刷新头部 <com.vipstation.sticky_refreshloadmore.swipetoloadlayout.SwipeToLoadLayout android:id="@+id/swipeToLoadLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@id/swipe_refresh_header" layout="@layout/layout_twitter_header" /> <se.emilsjolander.stickylistheaders.StickyListHeadersListView android:id="@+id/swipe_target" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" android:clipToPadding="false" android:drawSelectorOnTop="true" android:fastScrollEnabled="true" android:overScrollMode="never" android:scrollbarStyle="outsideOverlay"> </se.emilsjolander.stickylistheaders.StickyListHeadersListView> <include android:id="@id/swipe_load_more_footer" layout="@layout/layout_classic_footer" />//刷新尾部 </com.vipstation.sticky_refreshloadmore.swipetoloadlayout.SwipeToLoadLayout> </LinearLayout>
2.基本资料的model
/** * 基本資料 */ public class RObject0Model { private String __type;// private String DT_BIRTHDATE;//出生日期 private String NO_FROZEN;//凍結 private String NO_LEVEL;//會員級別 private String ST_ADDRESS;//地址 private String ST_CHNAME;//姓名 private String ST_CODE;//會員編號 private String ST_COUNTRY;//國籍 private String ST_EMAIL;//電郵 private String ST_ENGNAME;//NAME private String ST_FAX;//傳真 private String ST_GROUP;//組別 private String ST_LOC_ID;//庫存點 private String ST_NETACCOUNT;//網絡賬號 private String ST_NETACCOUNTTYPE;//賬號類型 private String ST_PROFESSION;//職業 private String ST_REF_NO;//參考編號 private String ST_REMARKS;//備註 private String ST_STAFFID;//跟進人 private String ST_TEL;//聯繫電話一 private String ST_TELEPROVIDER_1;//電訊商一 private String ST_TELEPROVIDER_2;//電訊商二 private String ST_TEL_2;//聯繫電話二 public String get__type() { return __type; } public String getDT_BIRTHDATE() { return DT_BIRTHDATE; } public String getNO_FROZEN() { return NO_FROZEN; } public String getNO_LEVEL() { return NO_LEVEL; } public String getST_ADDRESS() { return ST_ADDRESS; } public String getST_CHNAME() { return ST_CHNAME; } public String getST_CODE() { return ST_CODE; } public String getST_COUNTRY() { return ST_COUNTRY; } public String getST_EMAIL() { return ST_EMAIL; } public String getST_ENGNAME() { return ST_ENGNAME; } public String getST_FAX() { return ST_FAX; } public String getST_GROUP() { return ST_GROUP; } public String getST_LOC_ID() { return ST_LOC_ID; } public String getST_NETACCOUNT() { return ST_NETACCOUNT; } public String getST_NETACCOUNTTYPE() { return ST_NETACCOUNTTYPE; } public String getST_PROFESSION() { return ST_PROFESSION; } public String getST_REF_NO() { return ST_REF_NO; } public String getST_REMARKS() { return ST_REMARKS; } public String getST_STAFFID() { return ST_STAFFID; } public String getST_TEL() { return ST_TEL; } public String getST_TELEPROVIDER_1() { return ST_TELEPROVIDER_1; } public String getST_TELEPROVIDER_2() { return ST_TELEPROVIDER_2; } public String getST_TEL_2() { return ST_TEL_2; } }
3.基本资料(R.layout.sticky_tail_item0)的布局
4.主界面代码和解释
public class CustomerDetailsActivity extends SectorMenuActivity implements OnRefreshListener, OnLoadMoreListener, View.OnClickListener { private TextView topText; private StickyListHeadersListView mListView; private View stickyHeaders; private TextView cusLevel; private TextView cusAllLevel; private TextView viewRecord; private TextView viewRecordNum; private TextView viewCode; private TextView viewName; private TextView viewSex; private EditText cusSearch; //软键盘 private InputMethodManager imm; private SwipeToLoadLayout swipeToLoadLayout; private String code; private int pages = 1, totalPages, type = 2; private ArrayList<String> listType = new ArrayList<>();//類別的集合 private List<RObject0Model> listRObject0 = new ArrayList<>();//这是十多个不同的数据集 private List<RObject1Model> listRObject1 = new ArrayList<>(); private List<RObject2Model> listRObject2 = new ArrayList<>(); private List<RObject3Model> listRObject3 = new ArrayList<>(); private List<RObject4Model> listRObject4 = new ArrayList<>(); private List<RObject5Model> listRObject5 = new ArrayList<>(); private List<RObject6Model> listRObject6 = new ArrayList<>(); private List<RObject7Model> listRObject7 = new ArrayList<>(); private List<RObject8Model> listRObject8 = new ArrayList<>(); private List<RObject9Model> listRObject9 = new ArrayList<>(); private List<RObject10Model> listRObject10 = new ArrayList<>(); private List<RObject11Model> listRObject11 = new ArrayList<>(); private StickyListAdapter mAdapter; private Type jsonType;//泛型的Gson数据解析 private Intent itCopy; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); baseSetContentView(R.layout.activity_customer_details); init(); getCrmDetailBase(); showWaitProgressDialog(this, 0, ""); getCrmDetail(); //输入框搜索 searchItem(); } private void init() { code = getIntent().getStringExtra("ST_CODE"); topText = (TextView) findViewById(R.id.top_text); topText.setText(R.string.language_customerDetails); imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mListView = (StickyListHeadersListView) findViewById(R.id.swipe_target); swipeToLoadLayout = (SwipeToLoadLayout) findViewById(R.id.swipeToLoadLayout); //添加头部布局 stickyHeaders = getLayoutInflater().inflate(R.layout.view_customer_type_info, null); mListView.addHeaderView(stickyHeaders); //实例化控件 cusLevel = (TextView) stickyHeaders.findViewById(R.id.cus_level); cusAllLevel = (TextView) stickyHeaders.findViewById(R.id.cus_allLevel); viewRecord = (TextView) stickyHeaders.findViewById(R.id.view_record); viewRecordNum = (TextView) stickyHeaders.findViewById(R.id.view_recordNum); viewCode = (TextView) stickyHeaders.findViewById(R.id.view_code); viewName = (TextView) stickyHeaders.findViewById(R.id.view_name); viewSex = (TextView) stickyHeaders.findViewById(R.id.view_sex); cusSearch = (EditText) stickyHeaders.findViewById(R.id.cus_search); //设置参数 cusLevel.setText(R.string.language_category); cusAllLevel.setText(R.string.language_totalRecord); cusSearch.setText(code); viewRecordNum.setText(getString(R.string.language_language_totalRecordNum, 0)); itCopy = new Intent(this, CopyActivity.class); // adapter = new StickyListAdapter(this, listRObject2); // mListView.setAdapter(adapter); // //分组折叠,布局要用 ExpandableStickyListHeadersListView // mListView.setOnHeaderClickListener(new StickyListHeadersListView.OnHeaderClickListener() { // @Override // public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosition, long headerId, boolean currentlySticky) { // if (mListView.isHeaderCollapsed(headerId)) { // mListView.expand(headerId); // } else { // mListView.collapse(headerId); // } // } // }); listType.add(getString(R.string.language_basicData)); listType.add(getString(R.string.language_advancedData)); listType.add(getString(R.string.language_totalRecord)); listType.add(getString(R.string.language_purchaseRecord)); listType.add(getString(R.string.language_reworkRecord)); listType.add(getString(R.string.language_queryRecord)); listType.add(getString(R.string.language_complaintRecord)); listType.add(getString(R.string.language_customerComments)); listType.add(getString(R.string.language_customerSympathy)); listType.add(getString(R.string.language_goodsReview)); listType.add(getString(R.string.language_concernGoods)); listType.add(getString(R.string.language_integralRecord)); mListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { //下拉到最后一个自动加载 if (view.getLastVisiblePosition() == view.getCount() - 1 && !ViewCompat.canScrollVertically(view, 1)) { swipeToLoadLayout.setLoadingMore(true); } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); findViewById(R.id.top_image1).setVisibility(View.GONE); findViewById(R.id.top_return).setOnClickListener(this); cusAllLevel.setOnClickListener(this); swipeToLoadLayout.setOnRefreshListener(this); swipeToLoadLayout.setOnLoadMoreListener(this); // //一进入就刷新 // swipeToLoadLayout.post(new Runnable() { // @Override // public void run() { // swipeToLoadLayout.setRefreshing(true); // } // }); } //搜索 private void searchItem() { cusSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { // 隐藏整個界面的软键盘 imm.hideSoftInputFromWindow(CustomerDetailsActivity.this.getCurrentFocus().getWindowToken(), 0); //搜索刷新(调用onRefresh()方法) swipeToLoadLayout.setRefreshing(true); } return false; } }); } //获取客户详情的基础数据 private void getCrmDetailBase() { networkInfo.getCrmDetail("MobileService.svc/GetCrmDetailBase/", 1, type, cusSearch.getText().toString(), new CallBack() { @Override public void onResponse(String response) { GetCrmDetailBaseModel baseModel = gson.fromJson(response, GetCrmDetailBaseModel.class); if (baseModel.getErrorCode() == 0) { viewCode.setText(":" + cusSearch.getText().toString()); viewName.setText(":" + baseModel.getST_NAME()); viewSex.setText(":" + baseModel.getST_SEX()); } else if (baseModel.getErrorCode() == 403) { saveAccountAndTokenAndLogin("", "", false); intentJumpLoginActivity(0); } else { viewRecord.setText("-"); viewCode.setText(":-"); viewName.setText(":-"); viewSex.setText(":-"); showToast(baseModel.getErrorMsg()); } } }); } //获取客户详情的进阶数据 private void getCrmDetail() { networkInfo.getCrmDetail("MobileService.svc/GetCrmDetail/", pages, type, code, new CallBack() { @Override public void onResponse(String response) { GetCrmDetailModel info = gson.fromJson(response, getTypeToken(type)); dismissProgressDialog(); viewRecord.setText(cusAllLevel.getText()); viewRecordNum.setText(getString(R.string.language_language_totalRecordNum, info.getItemTotal())); if (info.getErrorCode() == 0) { totalPages = info.getPageTotal(); if (pages == 1) { swipeToLoadLayout.setRefreshing(false); } else { swipeToLoadLayout.setLoadingMore(false); } if (info.getR_object() != null && info.getR_object().size() > 0) { switch (type) { case 0://基本資料 listRObject0.addAll(info.getR_object()); break; case 1://進階資料 listRObject1.addAll(info.getR_object()); break; case 2://總互動記錄 listRObject2.addAll(info.getR_object()); break; case 3://購買記錄 listRObject3.addAll(info.getR_object()); break; case 6://積分記錄 listRObject11.addAll(info.getR_object()); break; case 9://返修記錄 listRObject4.addAll(info.getR_object()); break; case 10://咨询记录 listRObject5.addAll(info.getR_object()); break; case 11://投诉记录 listRObject6.addAll(info.getR_object()); break; case 12://客户意见 listRObject7.addAll(info.getR_object()); break; case 13://客户慰问 listRObject8.addAll(info.getR_object()); break; case 15://货品评论 listRObject9.addAll(info.getR_object()); break; case 17: //关注货品 listRObject10.addAll(info.getR_object()); break; } mAdapter.notifyDataSetChanged(); } } else if (info.getErrorCode() == 403) { saveAccountAndTokenAndLogin("", "", false); intentJumpLoginActivity(0); } else { // showToast(info.getErrorMsg()); if (pages == 1) { swipeToLoadLayout.setRefreshing(false); } else { swipeToLoadLayout.setLoadingMore(false); } } } }); } /** * 设置值监听事件和跳转到详情或复制值的界面 * * @param helper ViewHolder * @param id 控件的Id * @param copyValue 值 */ private void setValueAndListenerAndJumpToActivity(ViewHolder helper, int id, final String copyValue) { //设置值 helper.setText(id, ":" + copyValue); //控件的点击事件 helper.getView(id).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { itCopy.putExtra("copy_txt", copyValue); startActivity(itCopy); } }); } //下面是十多种不同item加载数据 //泛型的Gson数据解析 private Type getTypeToken(int type) { // TypeToken是Gson库中包含的一种获取JSON类型的类,可以传入泛型来获取类型,而getType或getClass // 这种方法是获取不到泛型类型的,所以Gson解析泛型类型数据的关键就是TypeToken switch (type) { case 0://基本資料 jsonType = new TypeToken<GetCrmDetailModel<RObject0Model>>() { }.getType(); if (pages == 1) { // 设置适配器 mAdapter = new StickyListAdapter<RObject0Model>( getApplicationContext(), R.layout.sticky_tail_item0, listRObject0) { @Override public void convert(ViewHolder helper, RObject0Model item) { //设置值监听事件和跳转到详情或复制值的界面 setValueAndListenerAndJumpToActivity(helper, R.id.item0_code, item.getST_CODE()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_reference, item.getST_REF_NO()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_level, item.getNO_LEVEL()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_name, item.getST_CHNAME()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_engName, item.getST_ENGNAME()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_frozen, item.getNO_FROZEN()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_Email, item.getST_EMAIL()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_tel1, item.getST_TEL()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_tel2, item.getST_TEL_2()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_provider1, item.getST_TELEPROVIDER_1()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_provider2, item.getST_TELEPROVIDER_2()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_birthDate, item.getDT_BIRTHDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_accountType, item.getST_NETACCOUNTTYPE()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_account, item.getST_NETACCOUNT()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_group, item.getST_GROUP()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_loc, item.getST_LOC_ID()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_fax, item.getST_FAX()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_profession, item.getST_PROFESSION()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_country, item.getST_COUNTRY()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_staff, item.getST_STAFFID()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_address, item.getST_ADDRESS()); setValueAndListenerAndJumpToActivity(helper, R.id.item0_remark, item.getST_REMARKS()); } }; mListView.setAdapter(mAdapter); } break; case 1://進階資料 jsonType = new TypeToken<GetCrmDetailModel<RObject1Model>>() { }.getType(); if (pages == 1) { // 设置适配器 mAdapter = new StickyListAdapter<RObject1Model>( getApplicationContext(), R.layout.sticky_tail_item1, listRObject1) { @Override public void convert(ViewHolder helper, RObject1Model item) { //设置值监听事件和跳转到详情或复制值的界面 setValueAndListenerAndJumpToActivity(helper, R.id.item1_code, item.getST_CODE()); setValueAndListenerAndJumpToActivity(helper, R.id.item1_sales, StringUtils.keepTwoDecimal(item.getNO_TOTALSALES())); setValueAndListenerAndJumpToActivity(helper, R.id.item1_general, item.getNO_GENERAL() + ""); setValueAndListenerAndJumpToActivity(helper, R.id.item1_startDate, item.getDT_STARTDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item1_endDate, item.getDT_ENDTIME()); setValueAndListenerAndJumpToActivity(helper, R.id.item1_wholesale, item.getNO_ISWHOLESALE()); setValueAndListenerAndJumpToActivity(helper, R.id.item1_price, item.getST_DISPLAY_PRICE()); setValueAndListenerAndJumpToActivity(helper, R.id.item1_qty, item.getST_DISPLAY_QTY()); setValueAndListenerAndJumpToActivity(helper, R.id.item1_discount, item.getNO_DISCOUNT() + ""); setValueAndListenerAndJumpToActivity(helper, R.id.item1_rfId, item.getST_RFID()); setValueAndListenerAndJumpToActivity(helper, R.id.item1_purchase, item.getDT_PURCHASE()); StringBuilder sb = new StringBuilder(""); if (item.getLIST_ADDRESS() != null && item.getLIST_ADDRESS().size() > 0) { for (String str : item.getLIST_ADDRESS()) { sb.append(str); } helper.setText(R.id.item1_addressStr, getString(R.string.language_address, item.getLIST_ADDRESS().size())); } else helper.setText(R.id.item1_addressStr, getString(R.string.language_address, 0)); setValueAndListenerAndJumpToActivity(helper, R.id.item1_address, sb.toString()); } }; mListView.setAdapter(mAdapter); } break; case 2://總互動記錄 jsonType = new TypeToken<GetCrmDetailModel<RObject2Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject2Model>(getApplicationContext(), R.layout.sticky_tail_item2, listRObject2) { @Override public void convert(ViewHolder helper, RObject2Model item) { // helper.setText(R.id.item2_date, item.getDT_ACTIONDATE()); // helper.setText(R.id.item2_event, item.getST_EVENT()); // helper.setText(R.id.item2_content, item.getST_CONTENT()); // helper.setText(R.id.item2_staff, item.getST_STAFFID()); // helper.setText(R.id.item2_status, item.getNO_STATUS()); //设置值监听事件和跳转到详情或复制值的界面 setValueAndListenerAndJumpToActivity(helper, R.id.item2_date, item.getDT_ACTIONDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item2_event, item.getST_EVENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item2_content, item.getST_CONTENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item2_staff, item.getST_STAFFID()); setValueAndListenerAndJumpToActivity(helper, R.id.item2_status, item.getNO_STATUS()); } }; mListView.setAdapter(mAdapter); } break; case 3://購買記錄 jsonType = new TypeToken<GetCrmDetailModel<RObject3Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject3Model>(getApplicationContext(), R.layout.sticky_tail_item3, listRObject3) { @Override public void convert(ViewHolder helper, RObject3Model item) { setValueAndListenerAndJumpToActivity(helper, R.id.item3_date, item.getDT_ACTIONDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item3_event, item.getST_EVENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item3_code, item.getST_CODE()); setValueAndListenerAndJumpToActivity(helper, R.id.item3_name, item.getST_NAME()); setValueAndListenerAndJumpToActivity(helper, R.id.item3_dept, item.getST_ITEMDEPT()); setValueAndListenerAndJumpToActivity(helper, R.id.item3_group, item.getST_ITEMGROUP()); setValueAndListenerAndJumpToActivity(helper, R.id.item3_qty, item.getNO_QTY() + ""); setValueAndListenerAndJumpToActivity(helper, R.id.item3_price, StringUtils.keepTwoDecimal(item.getNO_TOTALDISPRICE())); setValueAndListenerAndJumpToActivity(helper, R.id.item3_file, item.getST_PREFIXNO()); setValueAndListenerAndJumpToActivity(helper, R.id.item3_staff, item.getST_STAFFID()); setValueAndListenerAndJumpToActivity(helper, R.id.item3_status, item.getNO_STATUS()); } }; mListView.setAdapter(mAdapter); } break; case 6://積分記錄 jsonType = new TypeToken<GetCrmDetailModel<RObject11Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject11Model>(getApplicationContext(), R.layout.sticky_tail_item11, listRObject11) { @Override public void convert(ViewHolder helper, RObject11Model item) { setValueAndListenerAndJumpToActivity(helper, R.id.item11_prefix, item.getST_PREFIXNO()); setValueAndListenerAndJumpToActivity(helper, R.id.item11_date, item.getDT_ACTIONDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item11_price, StringUtils.keepTwoDecimal(item.getNO_TOTAMT())); setValueAndListenerAndJumpToActivity(helper, R.id.item11_getIntegral, item.getNO_INTEGRAL() + ""); setValueAndListenerAndJumpToActivity(helper, R.id.item11_consumeIntegral, item.getNO_CONSUMPTION() + ""); setValueAndListenerAndJumpToActivity(helper, R.id.item11_totalIntegral, item.getNO_TOTINTEGRAL() + ""); } }; mListView.setAdapter(mAdapter); } break; case 9://返修記錄 jsonType = new TypeToken<GetCrmDetailModel<RObject4Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject4Model>(getApplicationContext(), R.layout.sticky_tail_item4, listRObject4) { @Override public void convert(ViewHolder helper, RObject4Model item) { setValueAndListenerAndJumpToActivity(helper, R.id.item4_time, item.getDT_ACTIONDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item4_event, item.getST_EVENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item4_file, item.getST_PREFIXNO()); setValueAndListenerAndJumpToActivity(helper, R.id.item4_code, item.getST_CODE()); setValueAndListenerAndJumpToActivity(helper, R.id.item4_catalog, item.getNO_CATALOG()); setValueAndListenerAndJumpToActivity(helper, R.id.item4_describe, item.getST_CONTENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item4_staff, item.getST_STAFFID()); setValueAndListenerAndJumpToActivity(helper, R.id.item4_status, item.getNO_STATUS()); } }; mListView.setAdapter(mAdapter); } break; case 10://咨询记录 jsonType = new TypeToken<GetCrmDetailModel<RObject5Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject5Model>(getApplicationContext(), R.layout.sticky_tail_item5, listRObject5) { @Override public void convert(ViewHolder helper, RObject5Model item) { setValueAndListenerAndJumpToActivity(helper, R.id.item5_time, item.getDT_ACTIONDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item5_event, item.getST_EVENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item5_consult, item.getNO_CATALOG()); setValueAndListenerAndJumpToActivity(helper, R.id.item5_code, item.getST_CODE()); setValueAndListenerAndJumpToActivity(helper, R.id.item5_content, item.getST_CONTENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item5_staff, item.getST_STAFFID()); setValueAndListenerAndJumpToActivity(helper, R.id.item5_status, item.getNO_STATUS()); setValueAndListenerAndJumpToActivity(helper, R.id.item5_id, item.getNO_ID()); } }; mListView.setAdapter(mAdapter); } break; case 11://投诉记录 jsonType = new TypeToken<GetCrmDetailModel<RObject6Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject6Model>(getApplicationContext(), R.layout.sticky_tail_item6, listRObject6) { @Override public void convert(ViewHolder helper, RObject6Model item) { setValueAndListenerAndJumpToActivity(helper, R.id.item6_time, item.getDT_CREATEDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item6_loc, item.getST_LOC()); setValueAndListenerAndJumpToActivity(helper, R.id.item6_target, item.getST_TARGET()); setValueAndListenerAndJumpToActivity(helper, R.id.item6_reason, item.getST_RESON()); setValueAndListenerAndJumpToActivity(helper, R.id.item6_catalog, item.getST_REQUEST()); setValueAndListenerAndJumpToActivity(helper, R.id.item6_staff, item.getST_FOLLOWSTAFF()); setValueAndListenerAndJumpToActivity(helper, R.id.item6_status, item.getNO_STATUS()); setValueAndListenerAndJumpToActivity(helper, R.id.item6_id, item.getNO_ID()); } }; mListView.setAdapter(mAdapter); } break; case 12://客户意见 jsonType = new TypeToken<GetCrmDetailModel<RObject7Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject7Model>(getApplicationContext(), R.layout.sticky_tail_item7, listRObject7) { @Override public void convert(ViewHolder helper, RObject7Model item) { setValueAndListenerAndJumpToActivity(helper, R.id.item7_time, item.getDT_CREATEDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item7_content, item.getST_CONTENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item7_detail, item.getST_CONTENT2()); setValueAndListenerAndJumpToActivity(helper, R.id.item7_staff, item.getST_STAFFID()); setValueAndListenerAndJumpToActivity(helper, R.id.item7_status, item.getNO_STATUS()); setValueAndListenerAndJumpToActivity(helper, R.id.item7_id, item.getNO_ID()); } }; mListView.setAdapter(mAdapter); } break; case 13://客户慰问 jsonType = new TypeToken<GetCrmDetailModel<RObject8Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject8Model>(getApplicationContext(), R.layout.sticky_tail_item8, listRObject8) { @Override public void convert(ViewHolder helper, RObject8Model item) { setValueAndListenerAndJumpToActivity(helper, R.id.item8_time, item.getDT_CREATEDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item8_staff, item.getST_STAFFID()); setValueAndListenerAndJumpToActivity(helper, R.id.item8_title, item.getST_TITLE()); setValueAndListenerAndJumpToActivity(helper, R.id.item8_content, item.getST_CONTENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item8_feedBack, item.getST_FEEDBACK()); setValueAndListenerAndJumpToActivity(helper, R.id.item8_status, item.getNO_STATUS()); setValueAndListenerAndJumpToActivity(helper, R.id.item8_id, item.getST_CODE()); } }; mListView.setAdapter(mAdapter); } break; case 15://货品评论 jsonType = new TypeToken<GetCrmDetailModel<RObject9Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject9Model>(getApplicationContext(), R.layout.sticky_tail_item9, listRObject9) { @Override public void convert(ViewHolder helper, RObject9Model item) { setValueAndListenerAndJumpToActivity(helper, R.id.item9_time, item.getDT_ACTIONDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item9_prefix, item.getST_PREFIXNO()); setValueAndListenerAndJumpToActivity(helper, R.id.item9_code, item.getST_CODE()); setValueAndListenerAndJumpToActivity(helper, R.id.item9_content, item.getST_CONTENT()); setValueAndListenerAndJumpToActivity(helper, R.id.item9_replyDate, item.getDT_REPLYDATE()); setValueAndListenerAndJumpToActivity(helper, R.id.item9_replyContent, item.getST_REPLY()); } }; mListView.setAdapter(mAdapter); } break; case 17: //关注货品 jsonType = new TypeToken<GetCrmDetailModel<RObject10Model>>() { }.getType(); if (pages == 1) { mAdapter = new StickyListAdapter<RObject10Model>(getApplicationContext(), R.layout.sticky_tail_item10, listRObject10) { @Override public void convert(ViewHolder helper, RObject10Model item) { setValueAndListenerAndJumpToActivity(helper, R.id.item10_time, item.getDT_ACTIONTIME()); setValueAndListenerAndJumpToActivity(helper, R.id.item10_code, item.getST_CODE()); setValueAndListenerAndJumpToActivity(helper, R.id.item10_dept, item.getST_ITEMDEPT()); setValueAndListenerAndJumpToActivity(helper, R.id.item10_group, item.getST_ITEMGROUP()); setValueAndListenerAndJumpToActivity(helper, R.id.item10_sellPrice, StringUtils.keepTwoDecimal(item.getNO_SELLPRICE())); setValueAndListenerAndJumpToActivity(helper, R.id.item10_attentionPrice, StringUtils.keepTwoDecimal(item.getNO_ATTENTIONPRICE())); setValueAndListenerAndJumpToActivity(helper, R.id.item10_email, item.getNO_STATUS()); } }; mListView.setAdapter(mAdapter); } break; } return jsonType; } @Override public void onRefresh() { // swipeToLoadLayout.postDelayed(new Runnable() { // @Override // public void run() { // //停止下拉刷新布局的显示 // swipeToLoadLayout.setRefreshing(false); //判断网络是否连接 if (NetUtils.isNetworkConnected(this)) { showWaitProgressDialog(this, 0, ""); //可以上拉加載數據 swipeToLoadLayout.setLoadMoreEnabled(true); if (!code.equals(cusSearch.getText().toString())) {//客户编号改变了才修改基础数据 getCrmDetailBase(); } code = cusSearch.getText().toString(); listRObject0.clear(); listRObject1.clear(); listRObject2.clear(); listRObject3.clear(); listRObject4.clear(); listRObject5.clear(); listRObject6.clear(); listRObject7.clear(); listRObject8.clear(); listRObject9.clear(); listRObject10.clear(); listRObject11.clear(); pages = 1; getCrmDetail(); } else { //停止下拉刷新布局的显示 swipeToLoadLayout.setRefreshing(false); } // } // }, 1000); } @Override public void onLoadMore() { // swipeToLoadLayout.postDelayed(new Runnable() { // @Override // public void run() { // //停止上拉加载布局的显示 // swipeToLoadLayout.setLoadingMore(false); if (pages < totalPages) { pages++; getCrmDetail(); } else { //停止上拉加载布局的显示 swipeToLoadLayout.setLoadingMore(false); //沒有數據不能再上拉了 swipeToLoadLayout.setLoadMoreEnabled(false); Toast.makeText(this, getText(R.string.language_noMoreData), Toast.LENGTH_SHORT).show(); } // } // }, 1000); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.top_return: finish(); break; case R.id.cus_allLevel: // 隐藏整個界面的软键盘 imm.hideSoftInputFromWindow(CustomerDetailsActivity.this.getCurrentFocus().getWindowToken(), 0); //选择类别 PickerUtil.alertBottomWheelOption(CustomerDetailsActivity.this, listType, listType.indexOf(cusAllLevel.getText()), new PickerUtil.OnWheelViewClick() { @Override public void onClick(View view, int position) { cusAllLevel.setText(listType.get(position)); //獲取類別對應的編號 switch (position) { case 0: case 1: case 2: case 3: type = position; break; case 4: case 5: case 6: case 7: case 8: type = position + 5; break; case 9: type = 15; break; case 10: type = 17; break; case 11: type = 6; break; } swipeToLoadLayout.setRefreshing(true); } }); break; } } }