博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView 分组 显示网络数据
阅读量:4984 次
发布时间:2019-06-12

本文共 3686 字,大约阅读时间需要 12 分钟。

最近项目中需要使用到 分组展示数据的形式,借鉴了网上前辈们的 精华,现写一点总结,留作个人查看。

  1. 首先 为了给ListView 中填充数据定义 List<BaseInfo> datas  = new ArrayList<BaseInfo>();

  2. BaseInfo 中首先需要定义一个className 来区别 类别,以便进行展示

  3. 在每组 数据存放之前,先往datas 中存放一个  只有 className 不为空的 BaseInfo对象,然后再把该组数据存放到datas中

  4. 然后按照 Adapter 填充数据的形式进行填充数据

  5. 在 Adapter 中需要 针对 只有 className 不为空的BaseInfo 对象,引入相应的布局文件

    以上即为 ListView 分组的逻辑思路

以下为个人使用部分代码:

Activity中的 数据处理 代码:

JSONArray array_obj = response                                        .getJSONArray("obj");                                for (int i = 0; i < array_obj.length(); i++) {                                    JSONObject obj = array_obj.getJSONObject(i);                                    String className = obj.getString("name");                                    String classId = obj.getString("id");                                     JSONArray array = obj                                            .getJSONArray("appProductClientDTOList");                                    if (array.length() == 0) {                                        // do nothing                                    } else {                                        BaseInfo base = new BaseInfo();                                        base.setClassName(className);                                        base.setClassId(classId);                                        datas.add(base);                                        for (int j = 0; j < array.length(); j++) {                                            BaseInfo baseInfo = new BaseInfo();                                               // 数据获取                                            baseInfo.setClassName(className);                                            baseInfo.setClassId(classId);                                            baseInfo.setScale(scale);                                            baseInfo.setAppId(appId);                                            baseInfo.setDownloadNumber(downloadCounts);                                            baseInfo.setVersionCode(Integer                                                    .parseInt(versionCode));                                            baseInfo.setSize(appSize);                                            baseInfo.setDownloadUrl(appFilePath);                                            baseInfo.setPackageName(packageName);                                            baseInfo.setName(name);                                            datas.add(baseInfo);                                        }                                    }                                }

 数据填充完毕后 填充Adapter :

adapter = new SplitClassAdapter(getApplicationContext(), datas);                        adapter.notifyDataSetChanged();                        list_classes.setAdapter(adapter);

Adapter中 处理逻辑:

 
if (mDatas.get(position).getName()==null) {               views = LayoutInflater.from(mcontext).inflate(R.layout.activity_header, group,false);               header = new ViewHolderHeader();               // ViewHolderHeader 的 组件初始化,若有处理事件,也相应的在此实现 。         }else{               views = LayoutInflater.from(mcontext).inflate(R.layout.item_class, group,false);               content = new ViewHolderContent();               //ViewHolderContent 的组件初始化,若有处理事件,也相应在此实现。

另外需要在Adapter 中 implement areAllItemsEnabled和 isEnabled 两个方法

@Override       public boolean areAllItemsEnabled() {           return true;        }        @Override       public boolean isEnabled(int position) {           // 如果-开头,则该项不可选            BaseInfo baseInfo = mDatas.get(position);         if (baseInfo.getName()==null) {            return false;        }else{            return true;        }     }

转载于:https://www.cnblogs.com/leov1/p/7446632.html

你可能感兴趣的文章
iOS:检测多媒体(相机、相册、麦克风)设备权限,弹框提示
查看>>
Linux 下修改配置实现在当前目录下寻找可执行文件
查看>>
css3 appearance在iphone上面的问题
查看>>
Linux常用命令(第二版) --权限管理命令
查看>>
jquery设置下拉框的值
查看>>
Linux 系统目录结构
查看>>
bug:逆向思维的延伸
查看>>
惮道安装方法
查看>>
周志华《机器学习》第一章小结
查看>>
mysql 内联接、左联接、右联接、完全联接、交叉联接 区别
查看>>
正则表达式30分钟入门教程[转自deerchao]
查看>>
Postion and AlignmentPoint
查看>>
软件工程三班四组作业完成情况(第三天)
查看>>
luogu P4082 [USACO17DEC]Push a Box
查看>>
OUTLOOK2019 解决 无法验证您连接到的服务器使用的安全证书
查看>>
[转]FICO上线准备
查看>>
BZOJ 3931 网络吞吐量(最短路+拆点最大流)
查看>>
Radis安装
查看>>
设计模式 (一) 代理模式
查看>>
fabric 自动化部署
查看>>