安卓 4.1.2。我有LinearLayout
一个ListView
带孩子的。我在这个列表视图中添加了 20 行,其中包含三个TextView
控件的自定义行布局。这些行中有一半是可见的,所以我需要滚动才能看到其余的行。问题是当我从顶部或底部开始滚动时,应用程序似乎挂起几秒钟(中间看起来还可以)。
我知道有几种优化可以使用。到目前为止,我已经尝试过这个:
- 在我的自定义
ArrayAdapter
中,我使用 aViewHolder
来避免调用findViewById
. - 在
getView()
中,LayoutInflater
is 仅在convertView
is时使用null
。 getViewTypeCount()
返回 1,getItemViewType(...)
返回 0。- 删除对我的文本视图的
setText()
所有调用。setColor()
- 断开调试器。
列表视图还有哪些其他可能的瓶颈?
我的行布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/my_text1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:id="@+id/my_text2"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="4"
android:ellipsize="end"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/my_text3"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="right"
android:textColor="@android:color/white" />
</LinearLayout>
我确实怀疑该layout_weight
属性,但删除它们并没有帮助!在另一个解决这个滞后问题的尝试中,我ListView
有以下风格:
<ListView
android:id="@+id/my_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dip"
android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
android:persistentDrawingCache="scrolling"
android:scrollingCache="false" />
如您所见,我几乎尝试了所有方法。尽管如此,当我滚动浏览这 20 行时,UI 在到达顶部/底部时会挂起 2-4 秒。因此,来回滚动会使应用程序冻结!
我在这里想念什么?