复杂ListView及多层嵌套界面卡顿问题终极解决NoCacheListView

博客介绍了如何解决复杂ListView及多层嵌套界面导致的性能问题,提出了一种名为NoCacheListView的解决方案。该ListView通过特殊的Adapter设计,提供两种设置方式,一是继承自提供的Adapter,二是使用常规的BaseAdapter,从而避免缓存导致的卡顿现象。
摘要由CSDN通过智能技术生成
    ListView是Android曾经也是现在最常用的控件,item复用和界面卡顿等问题伴随着ListView一直没有断过,后来RecyclerView的出现解决了一些缓存复用的问题,确实RecyclerView拥有一套比较完善的缓存机制。但是我们今天的主角不是它,而是一个全新的控件。
    有些时候我需要列表中在滑动的时候,一个view都不要重新绘制,我不需要item之间的相互复用,这样的情况下,外层一个ScrollView,里面一个LinearLayout,似乎就满足的条件,但是单纯的LinearLayout去当做ListView使用的时候还是要自己写不少逻辑。这次文章介绍的就是已经写好的一个自定义LinearLayout,完全可以当做一个无缓存的ListView使用,子界面不去频繁的重绘,就节省了很大一笔内存开销,界面滑动就会流畅,再复杂的列表嵌套,经测试也不会卡顿。好了,闲话少说,咱们直接看代码,首先就是重要的自定义控件NoCacheListView。

代码比较简洁,大家稍微看下,里面包含的配套的setAdapter方法,这是大家比较关心的,此类提供了两种,

1、setAdapter(),这个需要自己定义一个类继承本类中提供的Adapter,或者直接new NoCacheListView.Adapter()也可以;

2、setAdapter2(),这个方法就可以使用我们平时用的Adapter,也就是继承android.widget.BaseAdapter的适配器;

下面是NoCacheListView的完整代码,可以直接使用,

public class NoCacheListView extends LinearLayout implements View.OnClickListener {
    
    boolean mLayoutFrozen = false;
    
    private OnItemClickListener mListener;
    
    private Adapter<?> mAdapter;
    private android.widget.BaseAdapter mAdapter2;
    
    private DataSetObserver mDataSetObserver = new DataSetObserver() {
        @Override
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值