如何在Android RecyclerView中实现内容占位符,就像在Facebook中一样?
在从服务器获取和解析数据之前,我希望在如何在Android RecyclerView中实现内容占位符,就像在Facebook中一样?,android,android-recyclerview,Android,Android Recyclerview,在从服务器获取和解析数据之前,我希望在RecyclerView中为我的TextViews设置一个内容占位符 我所说的内容占位符,不是指默认文本或没有结果的文本。在网络上显示实际数据之前,请先看看Facebook是如何显示灰色动画块的。我想做到这一点 基本上是一种加载器,除非我的数据已经准备好显示(请不要建议我使用水平或旋转加载器)。 e、 g:我显示一个灰色块,一旦我的数据准备好显示,我将删除该块,然后显示文本 所有这些都需要在RecyclerView中完成。我希望我清楚我的需要 我如何做到这一
RecyclerView
中为我的TextView
s设置一个内容占位符
我所说的内容占位符,不是指默认文本或没有结果的文本。在网络上显示实际数据之前,请先看看Facebook是如何显示灰色动画块的。我想做到这一点
基本上是一种加载器,除非我的数据已经准备好显示(请不要建议我使用水平或旋转加载器)。
e、 g:我显示一个灰色块,一旦我的数据准备好显示,我将删除该块,然后显示文本
所有这些都需要在RecyclerView
中完成。我希望我清楚我的需要
我如何做到这一点
RecyclerView
中放置虚拟视图,因为除非我有数据,否则我的getCount
将返回0,因此不会显示任何视图<TextView android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="No Results" />
身份证起作用了
您必须使用ListViewActivity才能使其工作
如果不扩展ListViewActivity
试试看
ListView.setEmptyView()在不确切了解Facebook实现的情况下,我假设他们加载了一个初始数据源,其中包含“精益”数据,您可以根据这些数据判断需要显示多少单位,您可以创建一个占位符(这将是您的
RecyclerView
中的一种类型),加载该占位符的完整数据后,您将通知数据集更改并用完整项替换占位符(同样是RecyclerView
中的另一种类型)
基本上是一种加载器,除非我的数据已经准备好显示
例如,如果您完全没有数据,您没有将显示的“块”数量,则无法显示占位符,因为如果从数据源返回了空数据集,占位符可能会被丢弃 您需要创建骨架布局并在整个屏幕上充气。然后,可以使用不同的库添加微光效果 drawable/skeleton.xml:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<solid android:color="@color/skeleton"/>
<corners android:radius="4dp"/>
</shape>
layout/skeleton_row_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/row_layout_height">
<View
android:id="@+id/icon"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="15dp"
android:layout_gravity="center_vertical"
android:background="@drawable/skeleton"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<View
android:id="@+id/topText"
android:layout_width="200dp"
app:layout_constraintTop_toTopOf="@id/icon"
app:layout_constraintStart_toEndOf="@id/icon"
android:layout_height="15dp"
android:layout_marginLeft="16dp"
android:background="@drawable/skeleton"/>
<View
android:id="@+id/bottomText"
android:layout_width="250dp"
android:layout_height="15dp"
app:layout_constraintTop_toBottomOf="@id/topText"
android:layout_marginTop="10dp"
app:layout_constraintStart_toEndOf="@id/icon"
android:layout_marginLeft="16dp"
android:background="@drawable/skeleton"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@drawable/skeleton"
app:layout_constraintTop_toBottomOf="@id/icon"
android:layout_marginTop="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</android.support.constraint.ConstraintLayout>
在TextView中添加提示您也可以在XML中添加默认文本。我不希望这样做。我想要将文本加载到其中的占位符。你有没有注意到facebook上的情况?那样。假设显示一些块&当内容准备好时,它就会显示到其中。我不想要默认文本。我说我希望它和facebook相似。请看一下facebook数据是如何加载的。你能再解释一下吗?我不明白。你到底想要什么。把你想做的facebook的图片放进去。我不想这样。我想要将文本加载到其中的占位符。你有没有注意到facebook上的情况?那样。比如说一些块显示&然后当内容准备好时,它就会显示到其中。哦!很抱歉我在匆忙中没有正确阅读。我会试试这个。我正在使用AppCompativeActivity和RecyclerView。我不能改变它。完整的应用程序在许多地方都使用此功能。请尝试不使用ListViewActivity,如果它不起作用,还有其他方法可以使用it@AishwaryaTiwari所以决定:那么您希望它出现在列表视图
或RecylerView
?另外,我认为没有人确切知道你想要实现什么……嘿,谢谢你的想法。我也想到了类似的事情。将立即开始实施。:)我认为如果你明确地透露你是那篇博文的作者,那可能是件好事。否则,它可能会被视为非法的自我推销(我不是说它是)。也许你想看看这里的最后一部分:它回答了这个问题,并且非常详细,我补充说我写了教程。非常感谢。