【发布时间】:2017-08-01 19:31:47
【问题描述】:
我有一个使用 ViewPager 的三选项卡界面设置。在第三个选项卡中,我有一个 CardView,它可以展开/收回 onclick 以显示更多信息。 CardView 内部是一个 RecyclerView,里面充斥着一堆数据。
应用程序第一次打开并展开 CardView 时,展开动画比较滞后,但之后可以顺利展开/缩回。 RecyclerView 数据也可以毫无问题地更新。
有没有办法在打开应用程序时以某种方式加载/缓存数据,以免出现延迟。
对不起,如果问题很差,刚开始android开发。 谢谢
第三个标签的布局:
<android.support.v7.widget.CardView
android:id="@+id/SF_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp">
<LinearLayout
android:id="@+id/SF_wrapper"
android:layout_width="fill_parent"
android:layout_height="80dp"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/SF_list"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
</android.support.v7.widget.CardView>
用于膨胀 recyclerView 的数据是一个对象列表,每个对象都有 2 个浮点变量。大约长度约为 50。
用于为每个项目充气的 xml:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4sp"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="0dp"
android:layout_height="36sp"
android:layout_weight="1">
<TextView
android:id="@+id/value_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="lorem"
android:textSize="8sp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="36sp"
android:layout_weight="1">
<TextView
android:id="@+id/value_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="ipsom"
android:textSize="8sp" />
</RelativeLayout>
</LinearLayout>
扩展/缩回 cardView 的代码只是通过动画改变 SF_frame 的高度以显示 RecyclerView 的更多元素,而这是第一次显示延迟。
【问题讨论】:
-
什么样的数据以及它们是如何被检索的?如果有图片(我认为初学者可能需要大量的处理器时间)尝试使用一些异步加载的库(首先点击尝试square.github.io/picasso)
-
您好,感谢您的回复,信息只是一堆数字,在另一个函数中计算。我认为延迟与其说是获取数据,不如说是第一次显示一堆隐藏的视图
-
您可以先添加您的 Cardview xml 吗?那么我们应该知道问题可能出在哪里......我不认为预加载数据是明智的方式。仅当有真正庞大的数据时。
-
我已经在相关代码中添加了。再次感谢您的宝贵时间。
-
好吧,你的布局很糟糕,稍后会给你写一个更正的答案......所以问题可能只是动画或数据本身。我认为数据更有可能,因为动画只滞后一次。您还可以通过一些关于如何填充 TextViews 的简化代码吗?您可能需要异步填充它们(AsyncTask 最适合此)
标签: android performance android-recyclerview preload android-cardview