我有可能在滚动视图中显示大量元素。
滚动视图位于 viewflipper 内,因此仅当用户点击按钮翻转视图时才会创建滚动视图。
我为需要显示的每个条目动态添加一个“行”,并相应地填充该行。
当我要显示大量元素时,滚动视图需要很长时间才能实例化。
滚动视图如下所示:
<framelayout>
...
<linear layout>
...
<viewflipper>
...
<ScrollView
android:id="@+id/scroll_view_viewflip"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="75dip" >
<LinearLayout
android:id="@+id/scroll_view_linear"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
我用如下所示的行填充滚动视图:(单独的 XML 布局)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_name"
style="@style/SearchTableColumn"
android:layout_weight="25" />
<TextView
android:id="@+id/tv_value"
style="@style/SearchTableColumn"
android:layout_weight="25" />
<EditText
android:id="@+id/et_value"
style="@style/SearchTableColumn"
android:layout_weight="25" />
<NumberPicker
android:id="@+id/picker_value"
style="@style/SearchTableColumn"
android:layout_weight="25" />
<Spinner
android:id="@+id/spin_value"
style="@style/SearchTableColumn"
android:layout_weight="25" />
<TextView
android:id="@+id/tv_units"
style="@style/SearchTableColumn"
android:layout_weight="25" />
代码或多或少是:
LinearLayout row = (LinearLayout) layoutInflater.inflate(R.layout.attribute_row, null);
// multiple row.findViewById() for the elements on the row
// set up which element will be shown or hidden and set values
layout.addView(row);
通过跟踪,大部分时间似乎都在 inflater/inflate() 函数中。
我可以在 XML 中或在我的行创建中做些什么来提高速度吗?我们正在谈论可能有 100 行。其他问题表明列表视图对性能来说不是一个好主意,而且我的数据有点像树视图(但对使用第 3 方树视图控件不感兴趣)。
我可以实现一个异步任务来在后台填充滚动视图,并在按下视图翻转按钮时添加同步逻辑以“等待”,但想知道是否有更好的选择。