万能适配器写法

本文介绍了一种万能适配器的写法,用于在单一界面中加载和切换多种不同的布局,避免了使用多个适配器导致的代码臃肿。通过抽象方法和ViewHolder模式,实现了灵活的数据绑定和复用,适用于复杂界面的高效开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                          万能适配器写法

写这个主要是记录如果在一个界面中加载(切换)十多种不同的布局,如果使用十多个适配器的话就太臃肿和麻烦:如下面的选择切换(每个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;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值