ListView嵌套Recylerview优化

来源:互联网 发布:php集成环境和自己 编辑:程序博客网 时间:2024/06/04 18:10

最近在做嵌套的时候,遇到了一个问题,在滑动的过程中。内存越来越大。最后导致崩溃。

最开始以为内存增加是由于在getView里面不断的new新的adapter.后来发现耗内存的地方主要是由于setAdapter这个动作。于是我打算换成notifyData的形式.复用屏幕上已存在的adapter。

主要需要优化3个地方:

1.屏幕上显示listview的多少行就实际用到多少recylerview的adapter。也就是在if(convertview == null) 的时候对RecylerView进行setAdapter.

在converview!= null 的时候 取出Adapter来。并且设置一些数据。


2.避免在getView里面new一个adapter这样会导致在滑动的过程中不断的new新的对象出来(虽然在测试当中增加内存主要是由于setAdapter这个操作)我们可以把RecylerView的adapter当作ListView中数据的一个属性-比如上图adapter就是从info中获取出来的。

3.可以设置滑动的时候不加载数据,停止的时候加载数据。这个优化内存的效果很明显 http://blog.csdn.net/yy1300326388/article/details/45153813

优化方式到此结束。

在研究的过程中,考虑过用一个HashMap来保存Adapter是否已经设置这种办法。但是在调试的过程中发现listview根本就不是我理解的那样。反正没看明白-这个方法也就失败了


0 0
原创粉丝点击