ListView嵌套ListView优化
在做业务时候,一个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优化的更多相关文章
- Listview嵌套Listview
今天做项目,打算模仿淘宝的订单管理,需要Listview嵌套Listview,都是两个控件都是沿着一个方向滑动的,嵌套在一起不幸福,以下是解决方案,打个笔记,以后估计还得用: 其中onMeasure函 ...
- UWP ListView嵌套ListView
要求:加载全部的订单,每个订单里面有一个或者多个产品,在列表中要展现出来, 1. xaml界面 步骤:1.这里使用的是x:bind绑定所以要引入实体类命名空间(OrderList集合中类的命名空间): ...
- ListView嵌套ListView时发生:View too large to fit into drawing cache的问题
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXkxMzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- ScrollView嵌套ListView,GridView数据加载不全问题的解决
我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...
- 浅谈ScrollView嵌套ListView及ListView嵌套的高度计算
引言 在Android开发中,我们有时会需要使用ScrollView中嵌套ListView的需求.例如:在展示信息的ListView上还有一部分信息展示区域,并且要求这部分信息展示区域在ListVie ...
- 关于ScrollView嵌套ListView问题
Android开发之ScrollView中嵌套ListView的解决方案 原文:http://blog.csdn.net/minimicall/article/details/40983331 ...
- ScrollView 嵌套ListView、RecyclerView(持续更新)
ListView: 只要重写ListView或GridView的onMeasure()方法即可: @Override protected void onMeasure(int widthMeasure ...
- android listView嵌套gridview的使用心得
在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中, 不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动 ...
- 四种方案解决ScrollView嵌套ListView问题(转)
以下文章转自@安卓泡面 在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全.我试过很多种方法,它们各有利弊. 在这里我将会从使用ScrollVie ...
随机推荐
- 泛型? extents super
?可以接受任何泛型集合,但是不能编辑集合值.所以一般只在方法参数中用 例子: ? extends Number 则类型只能是Number类的子孙类 ? super String 则类型只能是Str ...
- MySQL数据库服务器 主从配置
A B 为两台 MySQL 服务器,均开启二进制日志,数据库版本 MySQL 5.5 一.服务器参数 [A 服务器 192.168.1.100] server-id = 1 binlog-do-d ...
- 代码bug
1.webstorm ide未配置basePath本地会加入根路径 2.点击一次就销毁可以给标签设置一个值data-val="0" 某个函数只执行一次的方法,或者也可以考虑绑用on ...
- 简单实现tab标签页切换
常见面试题: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- CSS浮动元素的水平居中
方法一: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- JS设置Cookie,及COOKIE的限制
在Javascript脚本里,一个cookie 实际就是一个字符串属性.当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值.每个cookie除了 name ...
- 那些年被我坑过的Python——一夫当关 第十三章(堡垒机初步设计)
堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必 ...
- 转:2014年最酷的30个JavaScript库
原文来自于:http://www.gbtags.com/gb/share/3701.htm 使用JavaScript库将会使开发变的更简单,大部分JavaScript库提供的功能都是极好的,当我们在为 ...
- About javascript language
Core http://www.cnblogs.com/leoo2sk/archive/2010/12/19/ecmascript-scope.html function(arguments) fun ...
- 【HDOJ】2405 Marbles in Three Baskets
BFS+状态压缩. /* 2405 */ #include <iostream> #include <queue> #include <cstdio> #inclu ...