在做业务时候,一个ListView显示多种数据类型,我们想到的方法是ListView在嵌套一个ListView,对于子ListView

占父ListView的一行,就攻克了问题,可是这种逻辑是不是有点奇怪呢?





第一,父ListView的长度size须要加1,由于添加�了一行放子listView

    public int getCount() {

        return datas.size()+1;

    }



第二,须要推断在什么地方插入子listView ,就要用到getViewTypeCount()和getItemViewType (int position)两个方法



public int getItemViewType (int position){

        if(position==CHRILDLOCATION){//插入子ListView位置

             return  TYPE_0;//TYPE_0表示子ListView标志

       }

          

return  TYPE_1;//TYPE_1表示父ListView标志

}

第三,须要在父UI更新时候,当position>CHRILDLOCATION时对position-1,由于你在前面插入了子listView,事实上后

面得到的position,都占了一个位置.须要这时候减去

这三步理解起来就让人够烦了,非常混乱吧,还有更糟糕的事情,就是,子ListView你还要new 一个Adapter来遍历

出它的item,这样就形成循环中嵌套循环,你的代码性能是不是非常差。

重点来了:

我们能够在传入Adapter的数据中做文章,把不同的数据类型都用Object取代,然后把Object放入List集合,

在Adapter,推断类型,比方:一个商品列表,中间会杂着一些商品主题团,我们就通过List<Object>封装

这两种数据类型,实现对上面ListView嵌套的解说。

第一,在Adapter之外封装成一个List<Object>,就不须要在用到子ListView了,数据都在list中,也就不须要对

datas.size()+1的操作了,仅仅须要推断数据类型,然后做上面第二步操作;

public int getItemViewType (int position){

        if(datas.get(position) instanceof “商品主题团”){

             return  TYPE_0;//TYPE_0表示商品主题团



       }

return  TYPE_1;//TYPE_1表示商品

}

完了,也就不须要对数据更新Ui时候减一操作,避免了减少了出错的概率。

主要是不须要在getView中在new Adapter了,性能提高非常大。

ListView嵌套ListView优化的更多相关文章

  1. Listview嵌套Listview

    今天做项目,打算模仿淘宝的订单管理,需要Listview嵌套Listview,都是两个控件都是沿着一个方向滑动的,嵌套在一起不幸福,以下是解决方案,打个笔记,以后估计还得用: 其中onMeasure函 ...

  2. UWP ListView嵌套ListView

    要求:加载全部的订单,每个订单里面有一个或者多个产品,在列表中要展现出来, 1. xaml界面 步骤:1.这里使用的是x:bind绑定所以要引入实体类命名空间(OrderList集合中类的命名空间): ...

  3. ListView嵌套ListView时发生:View too large to fit into drawing cache的问题

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXkxMzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  4. ScrollView嵌套ListView,GridView数据加载不全问题的解决

    我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...

  5. 浅谈ScrollView嵌套ListView及ListView嵌套的高度计算

    引言 在Android开发中,我们有时会需要使用ScrollView中嵌套ListView的需求.例如:在展示信息的ListView上还有一部分信息展示区域,并且要求这部分信息展示区域在ListVie ...

  6. 关于ScrollView嵌套ListView问题

    Android开发之ScrollView中嵌套ListView的解决方案   原文:http://blog.csdn.net/minimicall/article/details/40983331   ...

  7. ScrollView 嵌套ListView、RecyclerView(持续更新)

    ListView: 只要重写ListView或GridView的onMeasure()方法即可: @Override protected void onMeasure(int widthMeasure ...

  8. android listView嵌套gridview的使用心得

    在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中, 不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动 ...

  9. 四种方案解决ScrollView嵌套ListView问题(转)

    以下文章转自@安卓泡面 在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全.我试过很多种方法,它们各有利弊. 在这里我将会从使用ScrollVie ...

随机推荐

  1. 泛型? extents super

    ?可以接受任何泛型集合,但是不能编辑集合值.所以一般只在方法参数中用 例子: ? extends Number  则类型只能是Number类的子孙类 ? super String  则类型只能是Str ...

  2. MySQL数据库服务器 主从配置

    A B 为两台 MySQL 服务器,均开启二进制日志,数据库版本 MySQL 5.5 一.服务器参数   [A 服务器 192.168.1.100] server-id = 1 binlog-do-d ...

  3. 代码bug

    1.webstorm ide未配置basePath本地会加入根路径 2.点击一次就销毁可以给标签设置一个值data-val="0" 某个函数只执行一次的方法,或者也可以考虑绑用on ...

  4. 简单实现tab标签页切换

    常见面试题: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  5. CSS浮动元素的水平居中

    方法一: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  6. JS设置Cookie,及COOKIE的限制

    在Javascript脚本里,一个cookie 实际就是一个字符串属性.当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值.每个cookie除了 name ...

  7. 那些年被我坑过的Python——一夫当关 第十三章(堡垒机初步设计)

      堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必 ...

  8. 转:2014年最酷的30个JavaScript库

    原文来自于:http://www.gbtags.com/gb/share/3701.htm 使用JavaScript库将会使开发变的更简单,大部分JavaScript库提供的功能都是极好的,当我们在为 ...

  9. About javascript language

    Core http://www.cnblogs.com/leoo2sk/archive/2010/12/19/ecmascript-scope.html function(arguments) fun ...

  10. 【HDOJ】2405 Marbles in Three Baskets

    BFS+状态压缩. /* 2405 */ #include <iostream> #include <queue> #include <cstdio> #inclu ...