我使用ViewPager设置了三个标签界面。在第3个选项卡中,我有一个可以展开/缩进的CardView,以显示更多信息。 CardView内部是一个RecyclerView,它充斥着一堆数据。
第一次打开应用程序并展开CardView时,展开动画非常滞后,但之后可以平滑地展开/缩回。 RecyclerView数据也可以毫无问题地更新。
有没有办法在打开应用程序时以某种方式加载/缓存数据,因此不会发生lagg。
对不起,如果问题很糟糕,只需启动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的更多元素,这是第一个显示滞后的内容。
答案 0 :(得分:1)
首先解决你的Layouting:
仅对文本使用B = [2 5 7]
C = 10;
n = 3;
r = ones(1,C);
r(B) = n;
A = repelem(1:C, r)
,对其他尺寸(宽度,高度,边距,填充等)使用sp
。对于文本,建议至少使用dp
。请查看android:textsize="12sp"
属性而不是android:gravity
,这样您就不必使用父布局来居中。
android:layout_gravity
在此布局中,如果要扩展RecyclerView,可能会实例化新视图(<android.support.v7.widget.CardView
android:id="@+id/SF_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp">
<!-- No need to use LinearLayout since only one child is used -->
<android.support.v7.widget.RecyclerView
android:id="@+id/SF_list"
android:layout_width="match_parent"
android:layout_height="80dp">
</android.support.v7.widget.RecyclerView>
</android.support.v7.widget.CardView>
和RecyclerView.Adapter.onCreateViewHolder
)多次。
实际上切换到该Tab也有点延迟,但它在动画中清晰可见。 (你从大约3个项目扩展到大约20个左右,我不知道你的布局看起来怎么样了)
和第二:
RecyclerView.Adapter.onBindViewHolder
如果填充这两个<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:orientation="horizontal">
<TextView
android:id="@+id/value_1"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_weight="1"
android:layout_gravity="center"
android:text="lorem"
android:textSize="8sp" />
<TextView
android:id="@+id/value_2"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_weight="1"
android:layout_gravity="center"
android:text="ipsom"
android:textSize="8sp" />
</LinearLayout>
的速度非常慢,那么你正在经历一些追赶。那么你可能正在进行非常复杂的数学运算(尽可能尝试简化它们),或者你以某种方式同步下载数据并等待结果。
请查看AsyncTask
并在绑定数据时使用它...您可以使用类似这样的内容(自行修改):
TextViews