ListView 分组 显示网络数据

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

  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;
        }
     }
时间: 2024-10-11 13:13:08

ListView 分组 显示网络数据的相关文章

android的listview分组显示的时候layout_marginTop失效的解决办法

在使用android的ListView组件做类似于通讯录这样的功能时,需要根据A.B.C这样的标题来区来分组显示通讯录中的姓名,本人在做实验过程中遇到了这样一个问题,比如,想让标题item和上边的用户名item中间有个间隙,而组(同个标题下)用户名之间不能有间隙,原本以为很简单,我认为在标题item的最外层LinearLayout中增加一个layout_marginTop属性即可,结果发现一只无效,最后请教了个高手告诉我需要在标题item的顶层LinearLayout中再嵌套一层,然后在第二层中

ListView显示网络数据出现数据堆积问题,求助!求助!!求助!!!

也不知道用"数据堆积"这个词汇是不是很不专业,但是我一时也想不出更能描述我这种情况的词了. 通过网络获取json字符串,解析后封装实体类,传递给具体的显示界面呈现,但是在每次更新查询数据时,上一次的数据还在ListView上滞留,停留在新数据的下方. 通过断点和logcat查看,新传递过去的数据没有重叠,自定义Adapter继承自BaseAdapter,使用ViewHolder复用控件,这一部分也是驾轻就熟的内容应该没问题.请教了人,支的招是,只创建一个全局MyAdapter对象,在加

Android ListView分组显示

ListView的实现方法也是普通的实现方法.只不过在list列表中加入groupkey信息.在渲染的时候要判断是否是分组的标题. 就是在使用不同的两个View的时候存在这种情况,convertView不为空但是由于它渲染到别的layout的关系.它里面内容的view是为空的经常会出现空指针的错误. 我这里使用了一个非常低效的方法,下次应该会改进一下. 先贴上自己实现的adapter 1 import java.util.ArrayList; 2 import java.util.HashMap

仿照支付宝账单界面--listview分组显示 用来做!发!财树充值交易明细

QQ图片20150430155638.png (151.65 KB, 下载次数: 32) 下载链接: http://pan.baidu.com/s/1kVMY1SV 密码: i8ta

C#在listview控件中显示数据库数据

一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 设置一列的Text属性,这就是列名 添加三列 3.编辑items属性,添加一行数据 编辑Text属性,添加一行的第一个数据 编辑subitems属性,添加一行中的其他数据 添加两个数据 填写结果 二.在listview中显示数据库数据 //在listview中显示数据库数据 private voi

安卓简历技术点——熟练掌握ListView的优化及异步任务加载网络数据。

对于面试,可能listview这个问题,永远高频出现,毕竟开发中,他出现的也是高频的. 我先说下基本优化 listview优化 1.复用减少内存消耗---->convertView进行判断是否为空,不为空的时候,直接重新使用.为空的时候给他一个布局 2.减少查找id的次数----->定义一个ViewHolder 存储控件,然后与convertView绑定起来 对于以上的两条如果说你能在项目中用到并且将Viewholder抽取到一个单独的类中进行复用,面试官对你看法会有所提高的. 继续吧 如果对

Android 自定义Adapter 但listview 只显示第一条数据

楼主让这个问题郁闷了一晚上.....在logcat里明明显示adapter的getview方法里的list大于一条数据 ,但posotion却一直是0.....运行后也只显示list[0]里面的数据....最后的最后原来错误出在布局文件上 我以前的是这样的; <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" > <!-- listv

MySQL数据中分级分组显示数据

前面已经有了SqlServer数据分级分组显示数据了.今天又来做一个MySQL数据库中的分级分组显示,SqlServer中用到了递归,这里为了简单就直接把根的数据显示为0 ,而不用递归了. 在MySQL数据库中创建数据表: CREATE TABLE `categories` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分类id' , `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_gene

Android 自定义 ListView 显示网络歌曲列表

本文内容 环境 项目结构 演示自定义 ListView 显示网络歌曲列表 参考资料 本文最开始看的一个国人的文章,没有源代码,根据文中提供的源代码,自己新建的项目(最可气的是,没有图标图片资源,只能自己乱编),但程序不是很稳定,有时能显示出列表中的缩略图,有时显示不出来,还在主线程访问了网络.后看文章评论,作者给出英文原文链接,本来想这下没事了吧,结果下载源代码运行后,还是有问题~仔细看英文原文,原来他也是根据 Github 上一个项目的基础上搞的,只是添加了式样,以及显示完整的歌曲列表,包括歌