问题描述
- 关于Android的ListView问题。
-
使用ListView好像很难,或者就是不能达到想要的效果。。
比如,类似于手机淘宝,美团的商品列表。
然而,作为小白的我,试着用动态添加自定义布局的方式实现类似的东西,但是做着做着又发现
了一个问题,如果添加的东西过多,会OOM。 而且上拉刷新实现起来很困难。
小弟我就想问问大家是用什么方式去实现那东西的?
解决方案
LZ应该先学学如何提问题,这个问题我就帮LZ拆分为两个问题。
问题1:ListView OOM的问题
问题2:如何实现上拉刷新
首先回答问题1:
ListView 里面有一个重要的方法叫做
public View getView(int position, View convertView, ViewGroup parent)
这个方法里有一个convertView,这个convertView就是需要用来重用的。
假设LZ有一个ItemView的资源为
R.layout.item_view
在geView方法内部就应该这样来重用
public View getView(int position, View convertView, ViewGroup parent){
CustomView view;
if(convertView==null){
view = (CustomView) mInflater.inflate(R.layout.item_view);
} else {
// convertView not null reuse
view = (CustomView) convertView;
}
//...
}
这样就可以在重用View了,但是看到LZ提到还需要加载图片,那么推荐LZ去看看Picasso这个图片加载框架,github地址:http://square.github.io/picasso
再来回答问题2:
Android其实有提供一个SwipeRefreshLayout,这个可以去官方文档上面看看使用方法就可以了,然后再给LZ发PullToRefresh的一个github地址:https://github.com/chrisbanes/Android-PullToRefresh
解决方案二:
Android ListView使用问题
Android中ListView的优化问题
Android ListView的getBottom获得值问题
解决方案三:
OOM异常就是内存溢出,这个是加载的文件太大了,建议加大内存!
解决方案四:
淘宝应该是webapp吧。原生的也只能listView多套布局了。关键是控制好内存。
解决方案五:
OOM证明你管理内存存在问题(包括内存泄漏,加载图片不适当等问题),而不是加大内存就能解决的!而且ListView有重用机制,如果你管理的好,不会出现OOM。
如果是初学者,建议打好基础,积累经验,这些问题都会慢慢会理解的~
例如现在你可以把相关代码贴出来让大神指点下,你就会慢慢了解ListView
解决方案六:
内存溢出,是估计你没用viewholder,导致创建了大量的视图,上拉刷新,自己不会写的话,网上很多来源的,都给你做好了,还发什么愁
解决方案七:
给你几个建议吧
1 :使用第三方控件,可以去git上下载
2 :布局的复用,加上缓存基本差不多了
解决方案八:
用XListView吧!效果很好的
解决方案九:
用XListView吧!效果很好的