美文网首页
List分组请求数据

List分组请求数据

作者: Micrason | 来源:发表于2016-08-17 14:27 被阅读26次

    现在有这样一种需求,假如有一个List,List中存放未知数量的字符串代码,例如:“000007.SZ”,我们希望通过List中的字符代码来获取相对应得股票当前价信息,而当前接口一次最多接受100个股票代码的请求,那么我们如何对List中的所有股票代码的数据请求完成,并无差错的将所有的股票的当前价信息一一保存并对应呢?

    1、首先我们得对List中的股票代码进行分组,每100个为一组,确定相分组的结果:

        private int getGroupNumber() {
            int listSize = list.size();
            int group;
            if (listSize % 100 == 0) {
                group = listSize / 100;
            } else {
                group = listSize / 100 + 1;
            }
            return group;
        }
    

    2、将group返回之后,我们使用循环获取各组的股票代码信息并组成新的String,以便获取相对应股票的当前价。

        //分组获取股票代码集并请求数据
        private void getPriceAndupDown() {
            int group = getGroupNumber();
            for (int i = 0; i < group; i++) {
                String codes;
                if (i * 100 + 99 < list.size()) {
                    codes = getCode(i * 100, (i * 100) + 99);
                } else {
                    codes = getCode(i * 100, list.size());
                }
                initRealDatas(i * 100, codes);
            }
        }
    
        //根据索引获取股票代码集
        private String getCode(int start, int end) {
            String codes = "";
            for (int i = start; i < end; i++) {
                String code = list.get(i).Zqdm;
                if (code.subSequence(0, 1).equals("6")) {
                    codes += code + ".SS,";
                } else {
                    codes += code + ".SZ,";
                }
            }
            return codes.substring(0, codes.length() - 1);
        }
    

    3、在进行真实的价格请求时应注意List的对应关系。

        private void parseRealDatas(int start, String codes) {
            for (int i = start; i < codes.split(",").length; i++) {
                //解析数据,此处省略
                ...
                if (i < list.size()) {
                    //price由上面数据解析而来
                    list.get(i).price = price;
                }
            }
        }
    

    4、最后进行数据刷新就可以了,一般来说我们数据都是放在ListView/RecycleView中展示的,那么问题来了,在进行分组请求时,由于网络等不确定性因素,我们什么时候进行数据的刷新 notifyDataSetChanged() 操作呢?当然,从某种程度上来讲,我们不管其是否分组,只要数据获取成功就进行刷新操作,这样并没有什么不妥。

    相关文章

      网友评论

          本文标题:List分组请求数据

          本文链接:https://www.haomeiwen.com/subject/avumsttx.html