编码-android listview反复调用getview()

问题描述

android listview反复调用getview()

哪位大神帮忙看看,只要一滑动listview就会调用调用getView,我的listview和父view都是fill_parent啊 求帮忙!

<?xml version="1.0" encoding="utf-8"?>
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
    android:id="@+id/shop_cat_relativeLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/grey"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/total_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:text="共  件商品"
        android:textColor="@color/black"
        android:textSize="20dip" />

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        xmlns:ptr="http://schemas.android.com/apk/res-auto"
        android:id="@+id/shop_cat_listView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/white"
        android:dividerHeight="1dp"
        android:fadingEdge="none"
        android:fastScrollEnabled="false"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        android:smoothScrollbar="true"
        android:layout_marginBottom="50dp"
        android:cacheColorHint="#00000000"
        android:listSelector="#00000000"
         />

</LinearLayout>

<RelativeLayout
    android:id="@+id/shop_cat_bottom"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/darkgrey"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/shop_cat_totalprice"
            android:layout_width="200dp"
            android:layout_height="fill_parent"
            android:layout_margin="15dp"
            android:text="合计:¥0.00"
            android:textColor="@color/white"
            android:textSize="15dp" />

        <TextView
            android:id="@+id/go_pay"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@color/red"
            android:gravity="center"
            android:text="去结算"
            android:textColor="@color/white"
            android:textSize="15dp" />
    </LinearLayout>
</RelativeLayout>

解决方案

最近做项目发现一个界面当有ListView是,getView和getCount中的log被疯狂调用。一个5个Item的ListView,getView竟然会被反复调用7组。尤其是当ItemView中需要加载图片时,很容易造成GC过多,很容易出现ANR。

原因就在于measure过程,ListView一般都会有好多个Item,而且也会同时显示若干组Item,这些Item的父元素都是这个Li......
答案就在这里:Android ListView反复调用getView和getCount

解决方案二:

肯定是要调用的,只要有新的item进入屏幕就会,所以你要复用converview,用viewholder

解决方案三:

建议使用recyclerView。自动实现可ViewHolder,可以复用item;支持各种Layout,纵向,横向,瀑布流等。

时间: 2016-02-10

编码-android listview反复调用getview()的相关文章

Android ListView反复调用getView和getCount

  最近做项目发现一个界面当有ListView是,getView和getCount中的log被疯狂调用.一个5个Item的ListView,getView竟然会被反复调用7组.尤其是当ItemView中需要加载图片时,很容易造成GC过多,很容易出现ANR. 原因就在于measure过程,ListView一般都会有好多个Item,而且也会同时显示若干组Item,这些Item的父元素都是这个ListView. 更具Google的解释,View在Draw的时候分成两个阶段:measure和layout

android listview 连续调用 getview调用getivew方法多次解决办法

此问题的讨论: http://bbs.csdn.net/topics/370257541 当我们在使用listview的时候.有时候自定义adapter的时候,是不是会发现在getview里打印日志的时候,重复调用很多次?有时候4次.有的严重甚至到10次,当我们在listview中移动的时候.每移动一列都会调用很多次,这样大大影响到效率!其实这和listview本身在android上的机制有关.下面我开始来介绍一下吧:       在布局,我们只有一个listview的时候.那好.我们把高设置成

getview方法不执行- android listview自定义adapter,getview方法不显示

问题描述 android listview自定义adapter,getview方法不显示 adapter的getCount值不为0,但是不执行getview方法,在ErrorLog中打印出来的log在下面贴出来了,希望路过的大牛们帮忙看看 解决方案 问题找到了,是我的listView的布局控件不正确,已经改好了 解决方案二: android listView 重写Adapter方法getView的性能优化问题 解决方案三: 空指针异常,找找在哪个位置. 解决方案四: log和问的错没什么关系 解

android 多次调用getview的position=0

做项目的碰到这么一个问题:自己定义的GridView的adapter在刷新数据,即调用getView方法时,除了调用正常次数(图中第2条到第8条)的getView,还会多调用1次getView方法(图中的第1条). 原因在于GridView的item的layout中android:layout_height定义为wrap_content , 绘制item高度时系统并不知道item应该绘制多高,它会先取一条来试探以确定item绘制的具体高度,这样就导致多调用了一次getView方法.在滑动.长按等

[Android]ListView的Adapter.getView()方法中延迟加载图片的优化

以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4139998.html   举个例子吧,以好友列表为例 ListView中每个Item表示一个好友,每个好友中都有一个头像,需要从服务端加载到本地,然后显示在item中. 显然,启动加载图片的过程应该是在getView()方法中触发,启动一个线程,然后下载头像图片.这里使用我写的一个开源框架ImageLoaderSample(https://github.com

Android ListView与getView调用卡顿问题解决办法

Android ListView与getView调用卡顿问题解决办法 解决办法1,设置ListView高度为固定值或者match_parent/ifll_parent @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { Log.d("onMeasure", "onMeasure"); isOnMeasure = true; super.onMeasure(

ListView多次调用getView方法

问题描述: ListView多次调用getView方法. 解决办法: 不要设置android:layout_height="wrap_content" 而应设置android:layout_height="fill_parent" 即: <ListView      android:id="@+id/listView"      android:layout_width="fill_parent"      androi

listview长按删除-android ListView长按删除之后,调用notifyDataSetChanged

问题描述 android ListView长按删除之后,调用notifyDataSetChanged ListView 长按删除之后,调用notifyDataSetChanged但是界面上仍然显示此条数据,怎么回事啊 解决方案 在adapter.notifyDataSetChanged()之前添加一句companyInfoList.get(position)就可以啦 解决方案二: 有一个笨办法.重新加载该页

Android ListView优化之提高android应用效率_Android

ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件.Adapter是listview和数据源间的中间人. 当每条数据进入可见区域时,adapter的getview()会被调用,返回代表具体数据的视图.触摸滚动时,频繁调用.支持成百上千条数据. 下面为显示每条数据的xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"