关于Android的ListView问题。 1C

使用ListView好像很难,或者就是不能达到想要的效果。。
比如,类似于手机淘宝,美团的商品列表。
然而,作为小白的我,试着用动态添加自定义布局的方式实现类似的东西,但是做着做着又发现
了一个问题,如果添加的东西过多,会OOM。 而且上拉刷新实现起来很困难。
小弟我就想问问大家是用什么方式去实现那东西的?

8个回答

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

用XListView吧!效果很好的

OOM异常就是内存溢出,这个是加载的文件太大了,建议加大内存!

淘宝应该是webapp吧。原生的也只能listView多套布局了。关键是控制好内存。

OOM证明你管理内存存在问题(包括内存泄漏,加载图片不适当等问题),而不是加大内存就能解决的!而且ListView有重用机制,如果你管理的好,不会出现OOM。

如果是初学者,建议打好基础,积累经验,这些问题都会慢慢会理解的~
例如现在你可以把相关代码贴出来让大神指点下,你就会慢慢了解ListView

内存溢出,是估计你没用viewholder,导致创建了大量的视图,上拉刷新,自己不会写的话,网上很多来源的,都给你做好了,还发什么愁

给你几个建议吧
1 :使用第三方控件,可以去git上下载
2 :布局的复用,加上缓存基本差不多了

用XListView吧!效果很好的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问