Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-ListView即使在adapter';s getView方法_Android_Performance_Image_Listview - Fatal编程技术网

Android-ListView即使在adapter';s getView方法

Android-ListView即使在adapter';s getView方法,android,performance,image,listview,Android,Performance,Image,Listview,我正在尝试使用Listview/customadapter创建人员列表。行显示得相当快,但即使在速度相当快的设备上,滚动也非常慢。除了使用asynchtask之外,我尝试了一些建议,希望将其作为最后的手段,但似乎没有任何东西可以提高性能。最后,作为使用asynchtask之前的最后一步,我尝试删除适配器的getview方法中的所有处理。现在,它所做的只是从xml膨胀视图并显示空行。我注意到,即使这样,滚动速度也没有提高。所以我怀疑原因可能是我的布局结构。 我能做些什么改变来加快速度吗?任何帮助都

我正在尝试使用Listview/customadapter创建人员列表。行显示得相当快,但即使在速度相当快的设备上,滚动也非常慢。除了使用asynchtask之外,我尝试了一些建议,希望将其作为最后的手段,但似乎没有任何东西可以提高性能。最后,作为使用asynchtask之前的最后一步,我尝试删除适配器的getview方法中的所有处理。现在,它所做的只是从xml膨胀视图并显示空行。我注意到,即使这样,滚动速度也没有提高。所以我怀疑原因可能是我的布局结构。 我能做些什么改变来加快速度吗?任何帮助都将不胜感激。提前谢谢

<TextView android:id="@+id/mId" android:text="TextView"
    android:layout_width="0px" android:layout_height="0px"></TextView>
<TextView android:id="@+id/phone" android:layout_height="0px"
    android:layout_width="0px"></TextView>
<TextView android:id="@+id/email" android:layout_height="0px"
    android:layout_width="0px"></TextView>


<ImageView android:id="@+id/imageView1" android:layout_width="match_parent"
    android:layout_height="110dp" android:adjustViewBounds="true"
    android:scaleType="fitXY" android:src="@drawable/bl_row_bg"></ImageView>


<TextView android:paddingTop="9.7dp" android:id="@+id/name"
    android:paddingLeft="25.88dp" android:text="xxxx"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:textColor="@android:color/black" android:lines="1"
    android:ellipsize="end" android:textStyle="bold"></TextView>

<ImageView android:src="@drawable/default_avatar" android:id="@+id/image1"
    android:layout_height="110dp" android:layout_width="110dp"
    android:scaleType="fitXY" android:paddingTop="6.47dp"
    android:paddingBottom="6.47dp" android:paddingRight="6.47dp"
    android:layout_alignParentRight="true"></ImageView>

<TextView android:id="@+id/txt1" android:paddingLeft="25.88dp"
    android:text="Turning 24" android:layout_height="wrap_content"
    android:layout_width="wrap_content" android:layout_below="@+id/name"
    android:textColor="@android:color/black"></TextView>

<TextView android:id="@+id/txt2" android:paddingLeft="25.88dp"
    android:text="23 Days to go" android:layout_height="wrap_content"
    android:layout_width="wrap_content" android:layout_below="@+id/txt1"
    android:textColor="@android:color/black"></TextView>

<ImageView android:layout_height="64.7dp" android:src="@drawable/ss_image2"
    android:id="@+id/image2" android:layout_width="64.7dp"
    android:scaleType="fitEnd" android:layout_alignBottom="@+id/imageView1"
    android:layout_alignParentRight="true"></ImageView>

<ImageView android:src="@drawable/bl_date_background"
    android:id="@+id/datebg" android:layout_height="110dp"
    android:layout_width="25dp"></ImageView>

<ImageView android:id="@+id/icon1"
    android:layout_toRightOf="@+id/datebg" android:layout_height="30dp"
    android:layout_width="30dp" android:layout_alignBottom="@+id/imageView1"></ImageView>

<ImageView android:id="@+id/icon2"
    android:layout_toRightOf="@+id/icon1" android:layout_height="30dp"
    android:layout_width="30dp" android:layout_alignBottom="@+id/imageView1"></ImageView>

<ImageView android:id="@+id/icon3"
    android:layout_toRightOf="@+id/icon2" android:layout_height="30dp"
    android:layout_width="30dp" android:layout_alignBottom="@+id/imageView1"></ImageView>

<ImageView android:id="@+id/icon4" android:layout_toRightOf="@+id/icon3"
    android:layout_height="30dp" android:layout_width="30dp"
    android:layout_alignBottom="@+id/imageView1"></ImageView>

<ImageView android:id="@+id/icon5"
    android:layout_toRightOf="@+id/icon4" android:layout_height="30dp"
    android:layout_width="30dp" android:layout_alignBottom="@+id/imageView1"></ImageView>

<TextView android:id="@+id/date" android:text="Tue, Dec 12"
    android:layout_height="wrap_content" android:layout_width="wrap_content"
    android:layout_alignParentLeft="true" android:textColor="@android:color/black"
    android:textStyle="bold" android:gravity="center" android:visibility="invisible"></TextView>


尝试以下内容

ListView lv = getListView();
lv.setCacheColorHint(Color.TRANSPARENT); // not sure if this is required for you. 
lv.setFastScrollEnabled(true);
lv.setScrollingCacheEnabled(false);

通过使用,可以轻松地使ImageView异步


我还注意到(如@Abid所述),调用lv.setScrollingCacheEnabled(false);改进滚动。我有一个列表视图,在Galaxy Tab 7“上运行良好,在Galaxy Tab 10.1上运行非常慢。原因是缓存所需的内存分配(以及堆增长的需要)。

请确保首先查阅实际的Android文档,并将Java方法与Android XML属性进行比较:

<ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/transparent"
    android:cacheColorHint="@android:color/transparent"
    android:fastScrollEnabled="true"
    android:persistentDrawingCache="scrolling"
    android:scrollingCache="false" />

对于那些需要优化XML属性的对象:

<ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/transparent"
    android:cacheColorHint="@android:color/transparent"
    android:fastScrollEnabled="true"
    android:persistentDrawingCache="scrolling"
    android:scrollingCache="false" />


如果您要创建自己的适配器来处理列表视图项,我会有一个
可绘图项的映射,您可以在
适配器中继续引用该映射。问题很可能是,每当列表视图适配器获取列表视图的每个子视图时,它每次都必须加载该图像。更有效的方法是先将它们载入内存,然后再引用它们

这是您的listitem xml布局吗?您的问题得到回答了吗?为什么android:scrollingCache=“false”?收集滚动缓存可能会导致旧款手机速度变慢。这是我在应用程序中使用的一个XML片段。