Android - 即使没有在适配器的 getView 方法中进行任何处理,带图像的 ListView 滚动速度也太慢

标签 android performance image listview

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

<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);

关于Android - 即使没有在适配器的 getView 方法中进行任何处理,带图像的 ListView 滚动速度也太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579570/

相关文章:

ios - spriteKit 提高性能

image - 来自 Markdown 元数据或 frontmatter 的 NextJs 图像

android - Android AES加密的Node js等效代码

android - 如何将 Context 实例注入(inject)类型转换器?

android - 尝试在 Intellij 2018.2.RC 中执行 JUnit 4 测试时出现 NoClassDefFoundError

c++ - 使用 OOP 高效地处理和读取轨迹文件

android - CoordinatorLayout 内的 Viewpager 不滚动折叠工具栏

performance - Matlab bsxfun - 为什么 bsxfun 在这种情况下无法工作?

php - 这是在 PHP 中显示图像的最合乎逻辑的方式吗?

android - 设置背景 - Framelayout 中的图片