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优化

时间: 2024-11-06 09:37:01

ListView嵌套ListView优化的相关文章

一个listview嵌套listview的简单例子

在我刚刚看到一个页面是需要listview嵌套listview的时候  我内心是拒绝的, 这种设计也太傻逼了啊.. 但是不能退缩不是,其实也很简单,关键都在Adapter中 在最外层的listview ,讲第二层的listview当成一个简单的控件,比如textview啥的  你比较好理解的东西 写进viewholder中 比如: public static class ViewHolder { public TextView mTextView; //体检项目的分类 如:车身报告 public

Android ListView嵌套ListView的实现方式

首先刚到北京一个月,产品经理让做一个类似于商城的东东,起初感觉没什么难度,(不就一个电子商务app嘛,以前也做过啊),但是当看到有需求是这样的 然后就开始做,起初太懒了,就在网上找,找到了一个ListView嵌套ListView的一哥们的讲解的大致思路的,然后根据那哥们的思路自己写了一个demo,感觉效果还挺好,不卡, 第一种实现方式:这种方式有个问题就像我项目中的问题,子列中的值如果是加减变化的,对应的每个父类的item的总价格会动态变化的话用此方式就会出现一定的问题,如果不需要实现像我项目图

ScrollView+Fragment+ListView嵌套ListView,麻麻再也不用担心我不会写嵌套

前言 之前写了一篇文章 android ListView/GridView与ScrollView嵌套的滑动冲突解决 介绍了如何解决ScrollView与AdapterView的嵌套,但是没有给出demo,那是因为那些代码比较多,而且是在手头的项目里,业务逻辑代码比较多,所以第一时间没有分享给大家. 今天终于有空把这些代码全部抽离了出来,并且去掉了业务代码和不必要的内容,以便大家能够更好的学习这个知识. 先贴一个效果图吧: 之前项目里我是使用复写ScrollView的onInterceptTouc

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

可尝试在布局里设置ListView: android:scrollingCache="false" 或者在代码里设置: setScrollingCacheEnabled(false);

GridView--scroolview嵌套listview和gridview

我们在真实项目中通常会遇到ListView或者GridView嵌套在ScrollView中问题.但是做的时候会发现,一旦两者进行嵌套,即会发生冲突.得不到我们希望的效果.由于ListView和GridView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView,那么里面的ScrollView高度计算就会出现问题.我们也就无法得到想要的效果.下面进入正题,我们将分别讨论ScrollView中嵌套ListView和FGridView的情况: 核心解决方案: 重写Li

Android ListView复杂列表优化实践

原文:Android ListView复杂列表优化实践 很多社交App都不免会涉及到复杂的列表元素实现,一个列表上面可能大量的图片,不定长的评论列表,给手机端的程序员带来了不少的挑战.本文就是在实现复杂的列表滑动的情况下,利用已知的优化方法指导下的一次优化实践,旨在提升ListView的滑动流畅度,为用户带来良好的体验. 1:设计稿: 这是列表中可能出现的ItemView,有两种,但是又有许多相同的地方,比如一样有点赞的图片,评论等...其中,评论和点赞的数量是可变的. 2:使用一般布局带来的问

ListView复用和优化详解

我们每一个Android开发人员对ListView的使用肯定是很熟悉的,然而多少人能真正的懂ListView的缓存机制呢,说白了就是ListView为了提高效率,而内部实现的一种优化,牺牲一点内存.而这种优化就需要复用ItemView(也就是item对应的View).那么下面楼主来对ListView和RecyclerView的item复用问题做一个深入的讲解先来一张大家学习的时候都遇到过的图这里写图片描述看不懂也没啥事,可以接着往下看,先有一个直观的认识首先来解答几个问题为什么会存在Item复用

anroid中ScrollView嵌套ListView

有时候项目里面需要ScrollView嵌套ListView,但是正常下ListView只会显示一行多一点,解决方法就是填充ListView数据后重新计算ListView的高度,这里有两种方法来实现. 第一种方法:重写ListView [java] view plaincopyprint? package com.jwzhangjie.test; import android.content.Context; import android.util.AttributeSet; import and

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

在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全.我试过很多种方法,它们各有利弊. 在这里我将会从使用ScrollView嵌套ListView结构的原因.这个结构碰到的问题.几种解决方案和优缺点比较,这4个方面来为大家阐述.分析.总结. 实际上不光是ListView,其他继承自AbsListView的类也适用,包括ExpandableListView.GridView等等,为了方便说明,以下均用ListView来代表. 一. 为什么要使用S